LeetCode_202_快乐数

题目描述:判断一个数是否为“快乐数”。一个“快乐数”定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是无限循环但始终变不到 1。如果可以变为 1,那么这个数就是快乐数。

解法:计算平方和→查看容器中是否存在该数→如果存在,返回false;否则存入容器,继续重复

代码如下:

class Solution {
public:
    bool isHappy(int n) {
        int temp = n;
        set s;
        while(n != 1){
            int temp = 0;
            while(n > 0){
                //计算平方和
                temp += (n%10) * (n%10);
                n /= 10;
            }
            n = temp;
            if(!s.insert(temp).second)
                return false;
        }
        return true;
    }
};

在这里使用了set容器,set在使用insert方法时,如果容器中已经存在了该元素,则second属性为false,否则为true。在这里要记得将n重新赋值,赋值成平方和,因为每次计算的平方和都是新的。

运行结果如下:

执行结果:通过

显示详情

执行用时 :8 ms, 在所有 C++ 提交中击败了51.20%的用户

内存消耗 :8.4 MB, 在所有 C++ 提交中击败了41.34%的用户

你可能感兴趣的:(LeetCode题解,C++,LeetCode)