首页 > 学院 > 开发设计 > 正文

leetcode-202-Happy Number

2019-11-08 03:13:53
字体:
来源:转载
供稿:网友

问题

题目:[leetcode-202]

思路

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

结尾数字是1在一个环里面反复循环

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

代码

class Solution {public: bool isHappy(int n) { std::map<int, bool> mapper; mapper[n] = true; bool flag = false; for(;;){ n = digitSum(n); if(1==n){ flag = true; break; } if(mapper.find(n) != mapper.end()) break; else mapper[n] = true; } return flag; }PRivate: int digitSum(int val){ int ret = 0; while(val){ int t = val%10; val /= 10; ret += t*t; } return ret; }};
上一篇:caffe ubuntu14.04安装

下一篇:Fxx and string

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表