当前位置: 首页 > news >正文

【LeetCode】202. 快乐数 - hash表 / 快慢指针

目录

  • 2023-9-5 09:56:15
  • 2023-9-6 19:40:51

在这里插入图片描述

202. 快乐数

2023-9-5 09:56:15

关键是怎么去判断循环:

  • hash表:
    每次生成链中的下一个数字时,我们都会检查它是否已经在哈希集合中。
    • 如果它不在哈希集合中,我们应该添加它。
    • 如果它在哈希集合中,这意味着我们处于一个循环中,因此应该返回 false
  • 快慢指针:
    跟踪两个值,称为快跑者和慢跑者。在算法的每一步中,慢速在链表中前进 1 个节点,快跑者前进 2 个节点(对 getNext(n) 函数的嵌套调用)。
    • 如果 n 是一个快乐数,即没有循环,那么快跑者最终会比慢跑者先到达数字 1。
    • 如果 n 不是一个快乐的数字,那么最终快跑者和慢跑者将在同一个数字上相遇。
class Solution {public boolean isHappy(int n) {HashSet<Integer> set = new HashSet<>();while (n != 1 && !set.contains(n)) {set.add(n);n = getNum(n);}return n == 1 ;}/*** 19 -> 1^2 + 9^2 = 82*/private int getNum(int n) {int totalSum = 0;while (n > 0) {int add = n % 10;n = n / 10;totalSum = n * n;}return totalSum;}
}

2023-9-6 19:40:51

第二次写的,使用的是hash表进行判断循环。

但是写的时候,由于过于自信了,但是还是有小问题出现:比如说私有方法忘记了返回值,忘记把数放到hash表里面。

下次需要注意这些问题:“无论会不会,都需要按照自己的想法一步一步来。”

附上代码:

class Solution {public boolean isHappy(int n) {Set<Integer> set =  new HashSet<Integer>();while ( n != 1 && !set.contains(n)){set.add(n);n = getNum(n);}return n ==1;}private int getNum(int n){int total = 0;int num = 0;while(n != 0){num = n % 10;n = n / 10;total += num * num;}return total;}
}

相关文章:

【LeetCode】202. 快乐数 - hash表 / 快慢指针

目录 2023-9-5 09:56:152023-9-6 19:40:51 202. 快乐数 2023-9-5 09:56:15 关键是怎么去判断循环&#xff1a; hash表&#xff1a; 每次生成链中的下一个数字时&#xff0c;我们都会检查它是否已经在哈希集合中。 如果它不在哈希集合中&#xff0c;我们应该添加它。如果它在…...

什么是多态性?如何在面向对象编程中实现多态性?

1、什么是多态性&#xff1f;如何在面向对象编程中实现多态性&#xff1f; 多态性&#xff08;Polymorphism&#xff09;是指在同一个方法调用中&#xff0c;由于参数类型不同&#xff0c;而产生不同的行为。在面向对象编程中&#xff0c;多态性是一种重要的特性&#xff0c;它…...

【目标检测】理论篇(3)YOLOv5实现

Yolov5网络构架实现 import torch import torch.nn as nnclass SiLU(nn.Module):staticmethoddef forward(x):return x * torch.sigmoid(x)def autopad(k, pNone):if p is None:p k // 2 if isinstance(k, int) else [x // 2 for x in k] return pclass Focus(nn.Module):def …...

IDEA爪哇操作数据库

少小离家老大回,乡音无改鬓毛衰 ⒈.IDEA2018设置使用主题颜色 IDEA2018主题颜色分为三种&#xff1a;idea原始颜色&#xff0c;高亮色&#xff0c;黑色 设置方法&#xff1a;Settings–Appearance&Behavior–Appearance ⒉.mysql中&#xff0c;没有my.ini&#xff0c;只有…...

一文速学-让神经网络不再神秘,一天速学神经网络基础(七)-基于误差的反向传播

前言 思索了很久到底要不要出深度学习内容&#xff0c;毕竟在数学建模专栏里边的机器学习内容还有一大半算法没有更新&#xff0c;很多坑都没有填满&#xff0c;而且现在深度学习的文章和学习课程都十分的多&#xff0c;我考虑了很久决定还是得出神经网络系列文章&#xff0c;…...

C++ 异常处理——学习记录007

1. 概念 程序中的错误分为编译时错误和运行时错误。编译时出现的错误包括关键字拼写出错、语句分号缺少、括号不匹配等&#xff0c;编译时的错误容易解决。运行时出现的错误包括无法打开文件、数组越界和无法实现指定的操作。运行时出现的错误称为异常&#xff0c;对异常的处理…...

【BIM+GIS】“BIM+”是什么? “BIM+”技术详解

对于我们日常生活影响最大的是信息化和网络化给我们的日常生活带来革命性的变化。“互联网+“在建筑行业里可以称为“BIM+”。“BIM+”"即是通过BIM与各类技术(互联网、大数据等)结合去完成不同的任务。将产品的全生命周期和全制造流程的数字化以及基于信息通信技术的模块…...

Flink算子如何限流

目录 使用方法 调用类图 内部源码 GuavaFlinkConnectorRateLimiter RateLimiter 使用方法 重写AbstractRichFunction中的open()方法,在处理数据前调用limiter.acquire(1); 调用limiter.open(getRuntimeContext())的源码,实际内部是RateLimiter,根据并行度算出subTask…...

垃圾分代收集的过程是怎样的?

垃圾分代收集是Java虚拟机(JVM)中一种常用的垃圾回收策略。该策略将堆内存分为不同的代(Generation)&#xff0c;通常分为年轻代(Young Generation)和老年代(Old Generation)。不同代的对象具有不同的生命周期和回收频率。 下面是Java中垃圾分代收集的一般过程&#xff1a; 1…...

NPM 常用命令(四)

目录 1、npm diff 1.1 描述 1.2 过滤文件 1.3 配置 diff diff-name-only diff-unified diff-ignore-all-space diff-no-prefix diff-src-prefix diff-dst-prefix diff-text global tag workspace workspaces include-workspace-root 2、npm dist-tag 2.1 常…...

Anaconda虚拟环境下导入opencv

文章目录 解决方法测试 解决方法 1、根据自己虚拟环境对于的python版本与电脑对应的位长选择具体的版本&#xff0c;例如python3.9选择cp39&#xff0c;64位电脑选择64 下载地址&#xff1a;资源地址 若是不确定自己虚拟环境对应的python版本&#xff0c;可以输入下列命令&…...

Linux设备驱动程序

一、设备驱动程序简介 图1.1 内核功能的划分 可装载模块 Linux有一个很好的特性:内核提供的特性可在运行时进行扩展。这意味着当系统启动 并运行时&#xff0c;我们可以向内核添加功能( 当然也可以移除功能)。 可在运行时添加到内核中的代码被称为“模块”。Linux内核支持好几…...

mybatis <if>标签判断“0“不生效

原if标签写法 <if test"type 0"><!--内部逻辑--> </if> 这种情况不生效,原因是mybatis是用OGNL表达式来解析的&#xff0c;在OGNL的表达式中&#xff0c;0’会被解析成字符(而我传入的type却是string)&#xff0c;java是强类型的&#xff0c;cha…...

企业数据的存储形式与方案选择

企业数据的存储形式 DAS&#xff08;直接附加存储&#xff09;&#xff1a;企业初期银行规模不大&#xff0c;企业的数据存储需求也比较简单&#xff0c;因此对企业数据存储的要求就是安全保存并可以随时调用。而DAS的之间连接可以解决单台服务器的存储空间扩展&#xff0c;高…...

图像处理简介

目录 基本术语 1 .图像(image) 1.1 像素(Pixel) 1.2 颜色深度&#xff08;Color Depth&#xff09; 1.3 分辨率&#xff08;Resolution&#xff09; 1.4 像素宽高比&#xff08;Pixel Aspect Ratio&#xff09; 1.5 帧率(FPS) 1.6 码率&#xff08;BR&#xff09; 1. …...

adb server version (19045) doesn‘t match this client (41); killing.的解决办法

我是因为安装了360手机助手&#xff0c;导致adb版本冲突。卸载之后问题解决 根据这个思路&#xff0c;如果产生"adb server version (19045) doesn’t match this client (41); killing."的错误&#xff0c;检查一下是否有多个版本的adb服务。...

实验室的服务器和本地pycharm怎么做图传

提前说一个 自认为 比较重要的一点&#xff1a; 容器中安装opencv&#xff0c;可以先试试用 apt install libopencv-dev python3-opencv 我感觉在图传的时候用的不是 opencv-python 而是ubuntu的opencv库 所以用 apt install 安装试一下 参考 远程调试 qt.qpa.xcb: coul…...

Vue + Element UI 前端篇(五):国际化实现

Vue Element UI 实现权限管理系统 前端篇&#xff08;五&#xff09;&#xff1a;国际化实现 国际化支持 1.安装依赖 执行以下命令&#xff0c;安装 i18n 依赖。 yarn add vue-i18n $ yarn add vue-i18n yarn add v1.9.4 warning package-lock.json found. Your project …...

[ROS]虚拟机ubuntu18.04系统里面运行usb_cam

首先安装usb_cam sudo apt-get install ros-melodic-usb-cam 运行&#xff1a; roscore roslaunch usb_cam usb_cam-test.launch 如果一运行报错&#xff0c;首先确认是否存在/dev/video0 可以使用ls /dev/video*查看&#xff0c;如果没有就是没有连接摄像头&#xff0c;…...

常用通讯协议比较

dubbo与http1.0的区别 二进制协议&#xff1a;Dubbo使用自定义的二进制协议&#xff0c;而HTTP 1.0使用文本&#xff0c;发送一条相同的消息&#xff0c;http1.0会有更大的网络开销。 连接复用&#xff1a;Dubbo采用单一的多路复用NIO长链接&#xff0c;每个请求都有一个对应的…...

鼠标键盘管理 ShareMouse for Mac最新

软件“ShareMouse”允许您通过单个鼠标和键盘控制多台计算机&#xff1a; 将鼠标移动到您想要控制的计算机的监视器上&#xff0c;指针会神奇地跳转到该计算机。任何鼠标和键盘输入都会传输到相应的计算机。 与网络KVM类似&#xff0c;ShareMouse通过本地LAN传输鼠标移动和点…...

【ALM工具软件】上海道宁与Perforce为您带来用于整个生命周期的应用程序生命周期管理软件

Helix ALM是 用于整个生命周期的 应用程序生命周期管理的ALM软件 具有专用于 需求管理&#xff08;Helix RM&#xff09;、测试用例管理&#xff08;Helix TCM&#xff09; 问题管理&#xff08;Helix IM&#xff09;的功能模块 Helix ALM提供了 无与伦比的可追溯性 您将…...

Android图形-架构2

目录 引言 组件概述 底层组件&#xff1a; 上层组件&#xff1a; 引言 Android图形架构主要涉及些什么呢&#xff1f; 1&#xff09;Android 系统级图形架构的基本元素&#xff1f; 2&#xff09;应用框架和多媒体系统如何使用这些元素&#xff1f; 3&#xff09;图形数据…...

文字验证码:简单有效的账号安全守卫!

前言 文字验证码不仅是一种简单易懂的验证方式&#xff0c;同时也是保护您的账号安全的重要工具。通过输入正确的文字组合&#xff0c;您可以有效地确认自己的身份&#xff0c;确保只有真正的用户才能访问您的账号。 HTML代码 <script src"https://cdn6.kgcaptcha.…...

Shell 运算符及语法结构

目录 一、Shell运算符 1.1 表达式expr 1.2 运算操作 1.3 操作实例 二、Shell条件判断 2.1 基本语法 2.2 值、权限、类型、多条件判断 三、Shell流程控制 3.1 if 流程语法 3.2 case 流程语法 3.3 for 流程语法 3.4 内部运算符 3.5 while循环流程语法 四、Shell读…...

为什么要建前缀索引?

分析&回答 有一种与索引选择性有关的索引优化策略叫做前缀索引&#xff0c;就是用列的前缀代替整个列作为索引key&#xff0c;当前缀长度合适时&#xff0c;可以做到既使得前缀索引的选择性接近全列索引&#xff0c;同时因为索引key变短而减少了索引文件的大小和维护开销。…...

vite介绍

vite vite是一种新的前端构建工具&#xff0c;vite借助了浏览器对ESM的支持&#xff0c;采用和传统webpack打包完全不一致的unbundle打包机制&#xff1b; vite的快主要体现在两个方面&#xff0c;快速的冷启动和快速的热更新 快速的冷启动&#xff1a;vite只需启动一台静态页…...

2023年软件测试常见面试题

测试花费的成本&#xff0c;要深入在那个环节上&#xff0c;&#xff08;前提准备上&#xff0c;需求理解上&#xff0c;业务逻辑&#xff0c;排错上&#xff0c;业务名词上理解&#xff0c;通过什么样的方法&#xff0c;有谁能解决这样的问题&#xff09; 软性热身题 1.自我…...

关于const指针的一个常见误区

关于const&#xff0c;我曾因为其在C和C中的不同&#xff0c;还有一些编译器对未定义的处理不同&#xff0c;搞得晕头转向… 后来有次在阅读《C primer plus》中我终于梳理了有关const的结论。 1.const基础知识 首先要明白const的难点在于修饰指针的时候&#xff0c;对于con…...

@alilclowcode-engine-ext@1.0.5 不支持安装react@^16.3.0

alilclowcode-engine-ext1.0.5 不支持安装react^16.3.0 https://github.com/alibaba/lowcode-demo https://lowcode-engine.cn/site/docs/demoUsage/intro https://github.com/alibaba/lowcode-engine https://docs.appsmith.com/getting-started/setup/installation-guides?…...