当前位置: 首页 > 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;每个请求都有一个对应的…...

CasRel关系抽取实战:对接Airflow构建SPO抽取ETL调度流水线

CasRel关系抽取实战&#xff1a;对接Airflow构建SPO抽取ETL调度流水线 1. 项目背景与价值 在日常业务中&#xff0c;我们经常需要从大量文本数据中提取结构化信息。比如从新闻文章中提取人物关系&#xff0c;从产品描述中提取规格参数&#xff0c;从客服对话中提取用户诉求等…...

OpenFeign性能优化最全实战

Feign 就是动态代理 模板化 HTTP 请求&#xff0c;帮你把接口方法自动转成 HTTP 调用。 完整执行流程&#xff08;8 步&#xff09; 启动时&#xff1a;FeignClient 接口被 Feign 扫描&#xff0c;生成动态代理类 调用时&#xff1a;执行接口方法 → 进入代理类 解析注解&…...

实时手机检测-通用企业应用案例:手机回收站自动分拣系统集成

实时手机检测-通用企业应用案例&#xff1a;手机回收站自动分拣系统集成 1. 引言&#xff1a;当手机回收遇上AI&#xff0c;效率革命正在发生 想象一下&#xff0c;一个大型的手机回收处理中心&#xff0c;每天要处理成千上万部来自不同渠道的旧手机。工人们需要手动将手机从…...

Phi-3-mini-128k-instruct数学推理能力展示:求解方程与几何证明

Phi-3-mini-128k-instruct数学推理能力展示&#xff1a;求解方程与几何证明 最近&#xff0c;我花了不少时间测试微软开源的Phi-3-mini-128k-instruct模型&#xff0c;想看看它在数学推理这块到底行不行。毕竟&#xff0c;一个模型如果能清晰、有条理地解决数学问题&#xff0…...

一天一个开源项目(第56篇):人人都能用英语 - AI 时代的外语学习开源项目

引言 “其实一个字就够了&#xff1a;用。” 这是「一天一个开源项目」系列的第 56 篇文章。今天介绍的项目是 人人都能用英语&#xff08;GitHub&#xff09;。 学英语的核心是什么&#xff1f;李笑来在 2010 年的著作里用一个字概括&#xff1a;用。如今&#xff0c;这个经典…...

边缘计算那些事儿——从协同视角看卸载策略

1. 边缘计算卸载技术入门指南 第一次听说"边缘计算卸载"这个概念时&#xff0c;我正被一个智能家居项目搞得焦头烂额。当时需要在摄像头端做人脸识别&#xff0c;但嵌入式设备的算力根本跑不动深度学习模型。直到同事提醒&#xff1a;"为什么不试试把计算任务卸…...

从零构建:基于FreeRTOS与LVGL的低功耗智能手表实战指南

1. 项目背景与核心目标 第一次接触智能手表开发是在三年前&#xff0c;当时市面上开源的方案要么功能简陋&#xff0c;要么功耗高得离谱。作为一个嵌入式老鸟&#xff0c;我决定自己动手搞一套真正可用的低功耗方案。经过多次迭代&#xff0c;最终选择了FreeRTOSLVGL这个黄金组…...

告别吃灰!用Kindle打造唐诗宋词字帖屏保的完整避坑指南(含繁简转换技巧)

用Kindle打造唐诗宋词字帖屏保的完整指南 作为一个长期关注数字阅读与传统文化的深度用户&#xff0c;我发现Kindle的墨水屏特性非常适合展示书法字帖。这种将现代科技与传统艺术结合的方式&#xff0c;不仅能提升设备使用率&#xff0c;还能在日常碎片时间中培养书写习惯。本文…...

Infiniband网络排错指南:从`ibstatus`异常到OpenSM日志分析,一次搞定常见连接问题

Infiniband网络排错实战&#xff1a;从基础诊断到高级调优的全链路指南 当40Gbps的Infiniband链路突然降速到10Gbps&#xff0c;或者关键节点的OpenSM服务频繁崩溃时&#xff0c;每个运维工程师都能体会到那种指尖发凉的焦虑。本文将带你穿越Infiniband故障迷雾&#xff0c;构建…...

5分钟搞定Meson交叉编译:手把手教你配置ARM64目标平台(附DPDK实例)

Meson交叉编译实战指南&#xff1a;从零构建ARM64平台的DPDK应用 第一次接触交叉编译时&#xff0c;我盯着满屏的工具链路径和架构参数发愣——这简直像在解译外星密码。直到发现Meson的交叉编译配置文件&#xff0c;才发现原来构建跨平台应用可以如此优雅。本文将带你用Meson这…...