代码随想录 Leetcode202. 快乐数

发布时间:2024年01月15日

题目:


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

class Solution {
public:
    bool isHappy(int n) {
        unordered_set<int> 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。

文章来源:https://blog.csdn.net/qq_52313711/article/details/135597156
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。