快乐数(HappyNumber)(LeetCode202)

1.何为快乐数?

快乐数,指的是一个数,求它的各位数的平方和,直到结果为1,即为快乐数。举个例子:
如上图所示,可以看到32在经过一系列运算后最终结果恒为1,则32为快乐数。
再比如:
如上图,以15作为起点的运算,在后续数字中出现了重复且不为1,则它会沿着这种趋势一直循环下去,所以15不是我们所期望的快乐数!
为了判断一个数字是不是快乐数,我们需要求出它的展开以便来确认结果。

在这里,我使用与快慢指针的思想,原因:如果是一个非快乐数,那么它后面的数据迟早会与前面的某一部分重复,类似于环形链表中的内环。

在这里,还是采取设置类似于两个快慢“指针”来进行数值展开,让慢指针每次只求后一位数,而快指针每次求后一个数的后一个。

此过程结束的条件有两个:

  1. 最后出现1,是快乐数
  2. 出现非1的重复数字,不是快乐数

所以,代码如下:

public class Solution {//求下一个展开数public static int getNext(int x){int z = 0;while(x>0){z += (x%10) * (x%10);x /= 10;}return z;}public boolean isHappy(int n) {int low = n;int fast = n;do {low = getNext(low);fast = getNext(getNext(fast));}while(low != fast && fast!=1);//do-while结束条件:数值重复,即low==fast;或者fast==1,即判定为快乐数return fast == 1;}
}

快乐数(HappyNumber)相关推荐

  1. 快乐数happy-number

    快乐数 题目链接 题目描述 编写一个算法来判断一个数 n 是不是快乐数. 如果 n 是快乐数就返回 True :不是,则返回 False . 「快乐数」定义为:对于一个正整数,每一次将该数替换为它每个 ...

  2. 算法----------快乐数 (Java版本)

    编写一个算法来判断一个数 n 是不是快乐数.「快乐数」定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1.如 ...

  3. [Leedcode][JAVA][第202题][快乐数]

    [问题描述] 编写一个算法来判断一个数 n 是不是快乐数.「快乐数」定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终 ...

  4. LeetCode实战:快乐数

    题目英文 Write an algorithm to determine if a number is "happy". A happy number is a number de ...

  5. 快乐数(最终要变成1)

    编写一个算法来判断一个数 n 是不是快乐数. 「快乐数」定义为: 对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和. 然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 ...

  6. LeetCode 快乐数(Happy Number)

    题目描述 编写一个算法来判断一个数是不是"快乐数". 一个"快乐数"定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这 ...

  7. 快乐数(双指针,哈希表)

    快乐数 方法一:用哈希表来记录 方法二.双指针 题目:编写一个算法来判断一个数 n 是不是快乐数. 「快乐数」定义为: 对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和. 然后重复这个过程 ...

  8. LeetCode Algorithm 202. 快乐数

    202. 快乐数 Ideas 快乐数的判断逻辑其实挺简单的,按照定义去循环执行就可以了. 关键是如果不是快乐数怎么结束循环. 我们猜测会有以下三种可能: 最终会得到 1 最终会进入循环 值会越来越大, ...

  9. lintcode-【简单题】快乐数

    题目: 写一个算法来判断一个数是不是"快乐数". 一个数是不是快乐是这么定义的:对于一个正整数,每一次将该数替换为他每个位置上的数字的平方和,然后重复这个过程直到这个数变为1,或是 ...

最新文章

  1. WMI技术介绍和应用——Event Provider
  2. 使用 cmd、PowerShell 等用命令行的方式创建文件及文件夹
  3. NIPS 2016 Highlighted Papers
  4. python 网络服务器框架_Django是Python下的一款网络服务器框架
  5. 安装rlwrap 的简单方法
  6. iPad不完美?盖茨的酸葡萄心理
  7. [转]网上整理 Web JS 通用
  8. html5 图形水平运动,【分享】HTML5的Canvas制作3D动画效果分享
  9. 总感觉这个访问量过于均匀……
  10. python重写和装饰器_Python | 老司机教你 5 分钟读懂 Python 装饰器
  11. RC电路一阶线性微分方程
  12. MAC install MySQL and DBeaver
  13. python之使用plt笔记
  14. 南京大学计算机学院英才计划,强基计划|南京大学信息与计算科学专业:三院联合师资,本硕博衔接培养信息计算和AI人才...
  15. 9个Excel小技巧,提高你的数据分析效率
  16. 华为机试 - 最大矩阵和
  17. Xcode 14.0编译iOS项目出错 ‘sprintf‘ is deprecated
  18. 远程桌面大师android,远程桌面大师iPad版
  19. 2017年高教社杯全国大学生数学建模竞赛题目--C题 颜色与物质浓度辨识
  20. 苏宁 android面试题,苏宁面试题.doc

热门文章

  1. 生成直链——百度网盘、微云
  2. 论文阅读-Retrieving and Reading : A ComprehensiveSurvey on Open-domain Question Answering
  3. PLM、ERP、EMS、CRM简介
  4. 行楷练习1 左点、右点、横两点、纵两点
  5. Nexus3.6 window版私服搭建 安装、配置教程(含安装包)
  6. 2023全国特种作业操作证高处安装、维护、拆除模拟试卷一[安考星]
  7. 安防监控实现之从网页上控制A9的LED灯
  8. DX11(九):处理键盘鼠标输入
  9. 【第006篇】通过impdp命令导入dmp文件到Oracle11g数据库中
  10. Android渐变界面设计