本文主要是介绍LeetCode 202 Happy Number,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
问题描述:
解答:
这道题定义了一种快乐数,就是说对于某一个正整数,如果对其各个位上的数字分别平方,然后再加起来得到一个新的数字,再进行同样的操作,如果最终结果变成了1,则说明是快乐数,如果一直循环但不是1的话,就不是快乐数,那么现在任意给我们一个正整数,让我们判断这个数是不是快乐数,题目中给的例子19是快乐数,那么我们来看一个不是快乐数的情况,比如数字11有如下的计算过程:
1^2 + 1^2 = 2
2^2 = 4
4^2 = 16
1^2 + 6^2 = 37
3^2 + 7^2 = 58
5^2 + 8^2 = 89
8^2 + 9^2 = 145
1^2 + 4^2 + 5^2 = 42
4^2 + 2^2 = 20
2^2 + 0^2 = 4
我们发现在算到最后时数字4又出现了,那么之后的数字又都会重复之前的顺序
可以用set来记录所有出现过的数字
class Solution {public boolean isHappy(int n) {Set<Integer> set=new HashSet<>();if(n==1){return true;}set.add(n);while(n!=1){int res=0;while(n!=0){res+=Math.pow(n%10,2); n/=10;}if(set.contains(res)){return false;}set.add(res);n=res;}return true;}
}
这篇关于LeetCode 202 Happy Number的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!