leetcode 202. 快乐数(Happy Number)

题目描述:

编写一个算法来判断一个数是不是“快乐数”。

一个“快乐数”定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是无限循环但始终变不到 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> visited;
        while(n != 1 && visited.find(n) == visited.end()){
            visited.insert(n);
            int val = 0;
            while(n > 0){
                int digit = n % 10;
                val += digit*digit;
                n /= 10;
            }
            n = val;
        }
        return n == 1;
    }
};
posted @ 2019-03-20 15:51  zhanzq1  阅读(150)  评论(0)    收藏  举报