需要注意到,无论是否符合条件,都会进入循环,某一个稳定值
稳定值为1,则为Happy number
不为1,则不可能为happy number
Java用的是HashSet<Integer> res=new HashSet<Integer>
添加元素res.add(number)
检查是否重复 res.contains(number)
C++用的是unordered_map<int,int> res;
添加元素是res[number]++;
检查元素是res[number]>0?
class Solution {
public boolean isHappy(int n) {
HashSet<Integer> res=new HashSet<Integer>();
boolean flag=false;
while(true){
int m=0;
while(n!=0){
m+=(n%10)*(n%10);
n/=10;
}
n=m;
if(res.contains(m)){
flag=(m==1);
break;
}
else
res.add(m);
}
return flag;
}
}
class Solution {
public:
bool isHappy(int n) {
unordered_map<int,int> res;
while(true){
int sum=0;
while(n){
sum+=(n%10)*(n%10);
n/=10;
}
n=sum;
if(res[n]++ >0)
break;
}
return n==1;
}
};