[202] leetcodeハッピー数(ハッシュ・テーブル)

トピックへのリンク:https://leetcode-cn.com/problems/happy-number/

タイトル説明

番号がないかどうかを判断するためのアルゴリズムを書く「彼の喜びを数えます。」

各位置で、その桁の二乗数を交換正の整数の場合、各時間と数が1になるまで、プロセスを繰り返し、それが可変であってもよいが、無限ループを有する:「幸せな数」として定義されます1未満。あなたが一つになることができた場合は、この番号は幸せ数です。

例:

输入: 19
输出: true
解释: 
12 + 92 = 82
82 + 22 = 68
62 + 82 = 100
12 + 02 + 02 = 1

考え

次の組み合わせは、その後、無限ループに、既にテーブルに存在する場合、デジタルメモリハッシュテーブルは、登場しています。

コード

class Solution {
public:
    bool isHappy(int n) {
        unordered_set<int> s;   // 记录已经出现的组合
        n = digitSquareSum(n);
        while (n!=1){
            if(s.find(n) != s.end())    // 出现循环
                return false;
            s.insert(n);
            n = digitSquareSum(n);
        }
        return true;
    }

private:
    int digitSquareSum(int n){
        int ret = 0;
        while (n>0){
            ret += (n % 10) * (n % 10);
            n /= 10;
        }
        return ret;
    }
};

ここに画像を挿入説明

おすすめ

転載: blog.csdn.net/zjwreal/article/details/94559268