力扣: 快乐数
文章目录
- 需求
- 分析
- 代码
- 结尾

需求
编写一个算法来判断一个数 n 是不是快乐数。
「快乐数」 定义为:
对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。
然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。
如果这个过程 结果为 1,那么这个数就是快乐数。
如果 n 是 快乐数 就返回 true ;不是,则返回 false 。
示例 1:
输入:n = 19
输出:true
解释:
12 + 92 = 82
82 + 22 = 68
62 + 82 = 100
12 + 02 + 02 = 1
示例 2:
输入:n = 2
输出:false
提示:
1 <= n <= 231 - 1
分析
取该数字的每一位上的数字,平方后求和。
将得到的结果作为新的数字,重复上述步骤。
如果最终结果是1,则该数字是快乐数字;如果出现了循环(即进入了一个已经出现过的数字),则该数字不是快乐数字。
代码
public boolean isHappy(int n) {Set<Integer> set = new HashSet();while( true ){n = getSum(n);if( n == 1 ){return true;}if( !set.add(n) ){return false;}}
}private int getSum(int n){int sum = 0;while( n > 0 ){int temp = n % 10;sum += temp * temp;n = n / 10;}return sum;
}
代码解释:
这是主方法,接收一个整数 n,判断它是否为快乐数字。
Set<Integer> set = new HashSet();
创建一个 HashSet 用于存储已经出现过的数字。这个集合帮助我们检测是否进入了循环。
无限循环,直到找到结果(是快乐数字还是进入循环)。
n = getSum(n);
调用 getSum 方法计算 n 的每一位的平方和,并将结果赋值给 n。
if (n == 1) { return true; }
如果计算结果为1,则返回 true,说明 n 是一个快乐数字。
if (!set.add(n)) { return false; }
尝试将 n 添加到 set 中。如果添加失败(即 set 中已经存在这个数字),说明 n 进入了循环,返回 false,说明 n 不是快乐数字。
结束 while 循环。
辅助方法getSum:
这是一个私有方法,用于计算数字 n 各位数字的平方和。
int sum = 0;
初始化 sum 为0,用于累加每一位数字的平方和。
while (n > 0) {
只要 n 大于0,就继续计算。
int temp = n % 10;
取 n 的最后一位数字。
sum += temp * temp;
将该位数字的平方累加到 sum 中。
n = n / 10;
去掉 n 的最后一位数字。
结束 while 循环。
return sum;
返回计算得到的平方和。
运行结果:

结尾
以上 是我对这道算法的一些遐想和延伸, 可能不是最优解, 但是算法的优化嘛 本身就是一个思索的过程, 能在这个思索和迭代的过程中有所收获和乐趣就是在成长了, 欢迎大家一起来交流更多的解答…
相关文章:
力扣: 快乐数
文章目录 需求分析代码结尾 需求 编写一个算法来判断一个数 n 是不是快乐数。 「快乐数」 定义为: 对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。 然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。 …...
一般位置下的3D齐次旋转矩阵
下面的矩阵虽然复杂,但它的逆矩阵求起来非常简单,只需要在 sin θ \sin\theta sinθ 前面加个负号就是原来矩阵的逆矩阵。 如果编程序是可以直接拿来用的,相比其它获取一般旋转轴不经过原点的三维旋转矩阵的途径或算法,应该能…...
每日一题——第八十六题
题目:写一个函数,输入一个十进制的数,将其转换为任意的r进制数 #include<stdio.h> void convertToBaseR(int num, int r); int main() {int num, r;printf("请输入十进制的整数:");scanf_s("%d", &…...
十、组合模式
组合模式(Composite Pattern)是一种结构型设计模式,它允许将对象组合成树形结构来表示“部分-整体”的层次关系。组合模式能够让客户端以统一的方式对待单个对象和对象集合,使得客户端在处理复杂树形结构的时候,可以以…...
一分钟了解网络安全风险评估!
网络安全风险评估是一种系统性的分析过程,旨在识别和评估网络系统中的潜在安全风险。这个过程包括识别网络资产、分析可能的威胁和脆弱性、评估风险的可能性和影响,以及提出缓解措施。网络安全风险评估有助于组织了解其网络安全状况,制定相应…...
【springsecurity】使用PasswordEncoder加密用户密码
目录 1. 导入依赖2. 配置 PasswordEncoder3. 使用 PasswordEncoder 加密用户密码4. 使用 PasswordEncoder 验证用户密码 1. 导入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-security</artifac…...
从0到1实现线程池(C语言版)
目录 🌤️1. 基础知识 ⛅1.1 线程概述 ⛅1.2 linux下线程相关函数 🌥️1.2.1 线程ID 🌥️1.2.2 线程创建 🌥️1.2.3 线程回收 🌥️1.2.4 线程分离 🌤️2. 线程池概述 ⛅2.1 线程池的定义 ⛅2.2 为…...
Visual studio自动添加头部注释
记事本打开VS版本安装目录下的Class.cs文件 增加如下内容:...
【C#生态园】提升性能效率:C#异步I/O库详尽比较和应用指南
优化异步任务处理:C#异步I/O库全面解析 前言 在C#开发中,异步I/O是一个重要的主题。为了提高性能和响应速度,开发人员需要深入了解各种异步I/O库的功能和用法。本文将介绍几个常用的C#异步I/O库,包括Task Parallel Library、Asy…...
管理医疗AI炒作的三种方法
一个人类医生和机器人医生互相伸手。 全美的医院、临床诊所和医疗系统正面临重重困难。他们的员工队伍紧张且人员短缺,运营成本不断上升,服务需求常常超过其承受能力,限制了医疗服务的可及性。 人工智能应运而生。在自ChatGPT推出将AI推向聚…...
VMware Workstation Pro Download 个人免费使用
参考 VMware Workstation Pro Download...
DevOps平台搭建过程详解--Gitlab+Jenkins+Docker+Harbor+K8s集群搭建CICD平台
一、环境说明 1.1CI/CD CI即为持续集成(Continue Integration,简称CI),用通俗的话讲,就是持续的整合版本库代码编译后制作应用镜像。建立有效的持续集成环境可以减少开发过程中一些不必要的问题、提高代码质量、快速迭代等;(Jenkins) CD即持续交付Con…...
Nginx之日志切割,正反代理,HTTPS配置
1 nginx日志切割 1.1 日志配置 在./configure --prefixpath指定的path中切换进去,找到log文件夹,进去后找到都是对应的日志文件 其中的nginx.pid是当前nginx的进程号,当使用ps -ef | grep nginx获得就是这个nginx.pid的值 在nginx.conf中…...
Mysql数据量大,如何拆分Mysql数据库(垂直拆分)
垂直拆分(Vertical Partitioning)是一种将数据库按照业务模块或功能进行拆分的方法,目的是将不同模块的数据放到不同的数据库中,从而减少单个数据库的压力,提高系统的性能和可扩展性。垂直拆分适用于数据量大且业务模块…...
机器人可能会在月球上提供帮助
登月是我们这个时代最具标志性的事件之一,这可能还算轻描淡写了:这是我们迄今为止在物理上探索得最远的一次。我听过一些当时的老广播,它们可以让你想象出这次航行的重要性。 现在,研究人员表示,我们可能很快就能重返…...
真实案例分享:零售企业如何避免销售数据的无效分析?
在零售业务的数据分析中,无效分析不仅浪费时间和资源,还可能导致错误的决策。为了避免这种情况,企业必须采取策略来确保他们的数据分析工作能够产生实际的商业价值。本文将通过行业内真实的案例,探讨零售企业如何通过精心设计的数…...
ctfshow-文件包含
web78 <?phpif(isset($_GET[file])){$file $_GET[file];include($file); }else{highlight_file(__FILE__); } 判断是否存在file参数 如果存在 将包含这个参数值 文件 php://filter可以获取指定文件源码。当它与包含函数结合时,php://filter流会被当作php文件执…...
Qt事件处理机制
用qt实现简单闹钟 widget.h #ifndef WIDGET_H #define WIDGET_H #include<QPushButton> #include<QTextEdit> #include<QLabel> #include <QWidget> #include<QMouseEvent> #include<QPoint> #include<QTime> #include<QTimer&…...
vue axios 如何读取项目下的json文件
在 Vue 项目中,使用 axios 读取本地的 JSON 文件可以通过将 JSON 文件放置在 public 目录中,然后通过 axios 发起请求读取。 步骤: 将 JSON 文件放置在 public 目录下: Vue 项目中的 public 目录是静态资源目录,项目编…...
燃气涡轮发动机性能仿真程序GSP12.0.4.2使用经验(二):使用GSP建立PG9351FA燃气轮机性能仿真模型
目录 一、PG9351FA燃气轮机简介及热力循环参数二、基于GSP的性能仿真模型设置环境参数设置进气道参数设置压气机参数设置燃烧室参数设置透平(涡轮)参数设置转子负载参数燃油流量外部控制 三、仿真结果四、其它 一、PG9351FA燃气轮机简介及热力循环参数 …...
优化算法避坑指南:为什么你的罚函数法不收敛?从原理到调参实战
优化算法避坑指南:为什么你的罚函数法不收敛?从原理到调参实战 当你在机器学习模型调参或工程设计优化中反复调整罚函数法参数却始终无法收敛时,是否怀疑过自己遗漏了某些关键细节?本文将带你深入罚函数法的"黑箱"&…...
3步突破AI工具限制:开源解决方案全解析
3步突破AI工具限制:开源解决方案全解析 【免费下载链接】go-cursor-help 解决Cursor在免费订阅期间出现以下提示的问题: Youve reached your trial request limit. / Too many free trial accounts used on this machine. Please upgrade to pro. We have this limi…...
8公里巷道,最小误差仅0.6%,天宝耐特携L2pro解锁矿山井下高效安全测量
随着数字矿山建设的加速推进,空间数据采集技术成为矿山数字化转型的重要支撑。在此背景下,天宝耐特在华南某大型金矿完成了灵光L2pro手持SLAM三维激光扫描技术的深度应用实践,以硬核技术破解矿山作业难题,实现井下数字孪生底座构建…...
Bilibili视频下载终极指南:如何免费高效保存B站精彩内容
Bilibili视频下载终极指南:如何免费高效保存B站精彩内容 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader 😳 项目地址: https://gitcode.com/gh_mirrors…...
小米音乐Docker化解决方案:打造智能家居音乐中枢实战指南
小米音乐Docker化解决方案:打造智能家居音乐中枢实战指南 【免费下载链接】xiaomusic 使用小爱同学播放音乐,音乐使用 yt-dlp 下载。 项目地址: https://gitcode.com/GitHub_Trending/xia/xiaomusic 小米音乐Docker项目是一款专为技术爱好者和开发…...
路径遍历 PortSwigger labs
File path traversal, simple case 实验信息 平台:PortSwigger Web Security Academy 漏洞:路径遍历漏洞(Path Traversal) Lab:Server-side vulnerabilities - PortSwigger 难度:简单 漏洞原理 网站通过 filena…...
3个高效解决Atlas OS中Xbox登录问题的终极技巧
3个高效解决Atlas OS中Xbox登录问题的终极技巧 【免费下载链接】Atlas 🚀 An open and lightweight modification to Windows, designed to optimize performance, privacy and security. 项目地址: https://gitcode.com/GitHub_Trending/atlas1/Atlas Atlas…...
【2026年6月最新】英语四级历年真题及答案解析PDF电子版(2015-2025年12月)
2026年6月全国大学英语四级考试安排2026年上半年全国大学英语四级考试(CET4)定于6月13日举行。2025年12月四级真题资料包提供2025年12月英语四级考试全套备考资料:完整版考试真题试卷详细答案解析高清听力音频MP3文件PDF电子版文档࿰…...
PP-DocLayoutV3产业应用效果:金融票据与医疗报告的结构化
PP-DocLayoutV3产业应用效果:金融票据与医疗报告的结构化 每次看到财务同事抱着一沓厚厚的银行流水单手动录入数据,或者医生在成堆的化验单里翻找关键指标,我就在想,这事儿能不能让机器来干?过去,文档智能…...
SEO_2024年最新SEO趋势与高效优化方法介绍
<h2>2024年最新SEO趋势解析:为百度收录打造高效优化方法</h2> <p>在互联网迅速发展的今天,搜索引擎优化(SEO)依然是网站流量和曝光的关键。2024年,百度作为中国最大的搜索引擎,也不断更新…...
