您的位置:首页 > 移动开发

LeetCode 202 : Happy Number

2015-05-07 21:36 399 查看
如果直接写会发现一个问题,当数字不是happy number 时会陷入死循环。有个trick ,如果有重复就不是happy number , 所以需要用一个哈希表去存算过之后的数,如果重复跳出循环。

这里可以用到set容器去存,find()能找出这个数的index,如果不在set中返回end()。

class Solution {
public:
bool isHappy(int n) {
set<int> s;
while(n!=1){
n=getsum(n);
if(s.find(n)!=s.end()){
return 0;
n=1;
}
s.insert(n);
}
return 1;
}
int getsum(int n){
int sum=0;
while(n){
sum=(n%10)*(n%10)+sum;
n=n/10;
}
return sum;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: