LeetCode 202. 快乐数 java题解
https://leetcode.cn/problems/happy-number/description/
哈希表
class Solution {
public boolean isHappy(int n) {
if(n==1) return true;
HashSet<Integer> set=new HashSet<>();
while(n!=1&&!(set.contains(n))){//没找到结果;没有重复出现过
set.add(n);//把这个数加到集合,也就是最初的数如果不是1也被加到集合了
int sum=count(n);//计算平方和
n=sum;//作为下一个数
}
return n==1;//n=1说明找到了
}
//计算数字的平方和
public int count(int n){
int sum=0;
while(n!=0){
sum+=(n%10)*(n%10);//最后一位数的平方
n=n/10;
}
return sum;
}
}
/*
在过程中,如果有算出的数重复出现,
那么每次出现这个数之后就是相同的过程循环,找不到答案了
*/