LeetCode202-快乐数-数学-哈希表

原题链接
LeetCode202-快乐数-数学-哈希表_第1张图片

Note:

一共三种情况:
1、算到1
2、进入死循环
3、单调递增

其中,3是不会发生的,因为可以考虑每位最大之后的下一个数字是多少,就可看出来
3位数的时候,最大是 999 那么他计算一次之后就是 243
所以说,不会无限制的增长下去的

那么就看前两种情况即可

代码如下:
class Solution {
public:
    bool isHappy(int n) {
        unordered_set<int> s;
        int ans = 0;
        while(ans != 1){
            ans = 0;
            while(n){
                int a = n % 10;
                n /= 10;
                ans += a * a;
            }
            n = ans;
            if(s.count(n))
                return false;
            s.insert(n);
        }
        return true;
    }
};

你可能感兴趣的:(leetcode,算法,数学,哈希表)