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

leetcode-202-Happy Number

2017-02-17 15:56 357 查看

问题

题目:[leetcode-202]

思路

这个题起初没想明白终止条件,后来才明白。做题的时候要注意,既然你想的和题目思路不一致,肯定是你错了。所以,还是要像题目思路靠拢。我又仔细看看了题目,发现题目其实说了终止的两个条件,只不过自己审题不清楚。

结尾数字是1

在一个环里面反复循环

第二点说明了,不会出现更多的数字。既然你在环里面反复迭代,那证明肯定有重复的数字存在。这点毋庸置疑,所以改用hash表即可。

代码

class Solution {
public:
bool isHappy(int n) {
std::map<int, bool> mapper;
mapper
= true;
bool flag = false;

for(;;){
n = digitSum(n);
if(1==n){
flag = true;
break;
}
if(mapper.find(n) != mapper.end()) break;
else mapper
= true;
}
return flag;
}
private:
int digitSum(int val){
int ret = 0;
while(val){
int t = val%10;
val /= 10;
ret += t*t;
}
return ret;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: