1、题目描述
输入一个数字判断它是不是开心数字。开心数字的定义是把一个数的每一位的平方相加,得到新的数字,重复这个过程,如果得到1,则是开心数字。
2、思路
用hash table保存已经产生过的数字,如果新产生的数字已经在hash table里了,说明它将一直循环下去,所以返回false。
若产生的新数字是1,则返回true。
3、代码
bool isHappy(int n) {
vector<int>v;
v.push_back(n);
while(n!=1){
int sum = 0;
while(n){
sum+=(n%10)*(n%10);
n/=10;
}
n=sum;
if(find(v.begin(),v.end(),n)!=v.end())
return false;
v.push_back(n);
}
return true;
}