202. 快乐数

题目

这道题刚看到的时候,首先是想到循环很多次(这个次数是用自己定义的一个很大的数),但是想着不科学,而是玄学。

于是看了卡哥思路

img

里面很关键的一句话就是:题目中说了会无限循环,那么也就是说求和的过程中,sum会重复出现,这对解题很重要!所以这道题目使用哈希法,来判断这个sum是否重复出现,如果重复了就是return false, 否则一直找到sum为1为止。

代码如下:

class Solution {
public:
    int getSum(int n)
    {
        int sum = 0;
        while (n)
        {
            sum += (n % 10) * (n % 10);
            n /= 10;
        }
        return sum;
    }
    bool isHappy(int n) {
        unordered_set<int> set;
        while (1)
        {
            int sum = getSum(n);
            if (sum == 1)
                return true;
            if (set.find(sum) != set.end())
                return false;
            else
                set.insert(sum);
            n = sum;
        }
    }
};
posted @ 2025-01-13 12:50  hisun9  阅读(7)  评论(0)    收藏  举报