力扣---快乐数

快乐数挺快乐
Write an algorithm to determine if a number n is happy.

A happy number is a number defined by the following process:

Starting with any positive integer, replace the number by the sum of the squares of its digits.
Repeat the process until the number equals 1 (where it will stay), or it loops endlessly in a cycle which does not include 1.
Those numbers for which this process ends in 1 are happy.
Return true if n is a happy number, and false if not.

Example 1:

Input: n = 19
Output: true
Explanation:
12 + 92 = 82
82 + 22 = 68
62 + 82 = 100
12 + 02 + 02 = 1
Example 2:

Input: n = 2
Output: false

Constraints:

1 <= n <= 231 - 1

用哈希表存储计算中出现的值即可。
代码:

#include 
#include 
class Solution {

public:
    unordered_set<int> hash;
    vector<int> getSingleNum(int n){
        vector<int> tmp;
        int x;
        while(n){
            x = n%10;
            n = n / 10;
            tmp.push_back(x);
        }
        return tmp;
    }
    bool isHappy(int n) {
        vector<int> ans ;
        hash.insert(n);
        int x = n;
        int len = 0;
        while(x!=1){
           
            ans = getSingleNum(x);
            len = ans.size();
            x = 0;
            for(int i=0; i<len; i++){
                // cout<
                x +=ans[i]*ans[i];
            }
            // cout<
            if(x == 1){
                return true;
            }
            if(hash.count(x) > 0)
            {
                return false;
            }
            hash.insert(x);
            // cout<<"x="<
        }
        return true;
    }
};

你可能感兴趣的:(数据结构,力扣)