LeetCode 202. 快乐数 Happy Number

Posted zsy-blog

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode 202. 快乐数 Happy Number相关的知识,希望对你有一定的参考价值。

技术图片

 

 解法一:哈希表

class Solution {
public:
    bool isHappy(int n) {
        set<int> seen;
        while (n != 1 && !seen.count(n))  //快乐或者存在环跳出
        {
            seen.insert(n);
            n = getNext(n);
        }
        return n == 1;
    }

    int getNext(int n)
    {
        int totalSum = 0;
        while (n > 0)
        {
            int d = n % 10;
            totalSum += d * d;
            n = n / 10;
        }
        return totalSum;
    }
};

 

解法二:快慢指针

class Solution {
public:
    bool isHappy(int n) {
        int slow = n;
        int fast = getNext(n);
        while (slow != 1 && slow != fast)  //快乐或者存在环跳出
        {
            slow = getNext(slow);
            fast = getNext(getNext(fast));
        }
        return slow == 1;
    }

    int getNext(int n)
    {
        int totalSum = 0;
        while (n > 0)
        {
            int d = n % 10;
            totalSum += d * d;
            n = n / 10;
        }
        return totalSum;
    }
};

 

以上是关于LeetCode 202. 快乐数 Happy Number的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode202.快乐数

LeetCode T202.Happy Number/寻找快乐数

202. 快乐数

[LeetCode] 202. 快乐数

题目地址(202. 快乐数)

[leetcode712]202. Happy Number判断快乐数字