自学内容网 自学内容网

力扣 202快乐数

快乐数这题有两个关键

一个是求n的 各个位上平方和

另一个是判断是否为快乐数的依据是是否在哈希表中找到已经出现过的数

1求各个位上平方和方法

定义sum

sum = N除以十取余的平方和

n/10

循环终止条件是n=0

2查找一个数是否出现,用哈希表unordered_set ,

插入用set.insert

找到重复出现的数,用set.find(n) != set.end()

/*
 * @lc app=leetcode.cn id=202 lang=cpp
 *
 * [202] 快乐数
 */

// @lc code=start
class Solution {
public:
    int getSum(int n)
    {
        int sum = 0;
        while(n)
        {
            sum += (n%10)*(n%10);
            n = n/10;
        }
        return sum;
    }
    bool isHappy(int n) {
        unordered_set<int> set;
        while(1)
        {
            n = getSum(n);
            if(n == 1) return true;
            if(set.find(n) != set.end())
            {
                return false;
            }
            else{
                set.insert(n);
            }
        }
        
        
    }
};
// @lc code=end


原文地址:https://blog.csdn.net/weixin_43261508/article/details/140361454

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!