代码随想录 Leetcode202. 快乐数

题目:

代码随想录 Leetcode202. 快乐数_第1张图片


代码(首刷自解 2024年1月15日):

class Solution {
public:
    bool isHappy(int n) {
        unordered_set hash;
        while(n != 1) {
            int sum = 0;
            while(n/10 != 0) {
                sum += (n % 10)*(n % 10);
                n/=10;
            }
            sum += n*n;
            if (hash.find(sum) != hash.end())   return false;
            else    hash.insert(sum);
            n = sum;
        }
        return true;
    }
};

        这个题自己十分钟做出来了,虽然是道简单题,但还是说一下做题过程:

        首先,根据题意将快乐数的求解过程用代码表示出来(也就是文中不含哈希表的部分)。

        然后发现一个问题,如果while循环n!=1就永远不会退出循环,于是要想办法当程序知道什么时候将永远不会等于1。

        很显然,当计算过程出现一个重复的数后,就永远不会等于1,自然而然想到用哈希表记录曾经的数,如果发生重复,就退出循环,返回false。

你可能感兴趣的:(#,leetcode,---,easy,算法)