202. Happy Number
来源:互联网 发布:口腔医学专升本知乎 编辑:程序博客网 时间:2024/06/05 02:55
- LeetCode
Write an algorithm to determine if a number is "happy".
A happy number is a number defined by the following process:Starting with any positive integer, replace the number by the sum of thesquares of its digits, and repeat the process until the number equals 1 (whereit will stay), or it loops endlessly in a cycle which does not include 1. Thosenumbers for which this process ends in 1 are happy numbers.
Example: 19 is a happy number
12 + 92 = 82
82 + 22 = 68
62 + 82 = 100
12 + 02 + 02 = 1
看到happy number的名字想起了研一曾经当作课程作业做过。。然而思路是啥早忘了。。重新想,就是将输入的N先转换成字符串,然后再循环读取字符串每个位置的数。 将每个位置的数相加,直到结果小于6为止(这个6比较trick,我开始是用的9,但是有个case是1111111没通过,算了一下加起来是7,于是就投机用了6。。)
class Solution(object): def isHappy(self, n): """ :type n: int :rtype: bool """ res=999 while res>6: s=str(n) length=len(s) i=0 n=0 while i<length: n+=int(s[i])*int(s[i]) i+=1 res=n if res==1: return True else: return False
其他的思路点拨:
(1)如果出现循环,在出现循环的这时候,判断下你的set里面是不是有1,有1就返回true
(2)非happy数一定会出现4的(待证明)
参考:
public class Solution { public boolean isHappy(int n) { Set<Integer> set = new HashSet<Integer>(); while(n!=1){ int sum = 0; while(n>0){ sum += (n % 10) * (n % 10); n = n / 10; } if(set.contains(sum)){ return false; } else { set.add(sum); } n = sum; } return true; }}
用set看,如果一旦包含了就返回false
(对于python则是用set, s=set() if x in s 测试 x 是否是 s 的成员 )
还可以转换成判断链表中是否有环的问题,用快慢指针去判断,快慢指针相遇了,则有环
- 202. Happy Number
- [LeetCode]202.Happy Number
- 【LeetCode】202.happy number
- LeetCode 202. Happy Number
- [leetcode] 202.Happy Number
- 【leetcode】202. Happy Number
- 202.Happy Number
- [leetcode] 202. Happy Number
- 202. Happy Number LeetCode
- 202. Happy Number
- leetCode 202. Happy Number
- 202. Happy Number
- 202. Happy Number
- 202. Happy Number
- [LeetCode]202. Happy Number
- leetcode 202. Happy Number
- 202. Happy Number
- 202. Happy Number
- 计算机网络 --应用层
- 通过浏览器获得百度云盘大文件真实下载地址
- POJ 1905 Expanding Rods(二分)
- mapreduce web日志预处理
- LOJ #6077. 「2017 山东一轮集训 Day7」逆序对
- 202. Happy Number
- 73前序遍历和中序遍历树构造二叉树
- string实现C++
- 自己封装一个类借助实现数据库加载及夜间模式
- matlab之simulink学习(1、搭建一个简单系统)
- 一个fork的面试题
- java生成PDF文件
- tomcat webapps 目录下web工程只有目录,没有class文件
- jstree -- 使用JSON 数据组装成树