LintCode解题思路LintCode解题思路

OJ Lintcode 快乐数

2017-02-19  本文已影响9人  DayDayUpppppp

写一个算法来判断一个数是不是"快乐数"。
一个数是不是快乐是这么定义的:对于一个正整数,每一次将该数替换为他每个位置上的数字的平方和,然后重复这个过程直到这个数变为1,或是无限循环但始终变不到1。如果可以变为1,那么这个数就是快乐数。

image.png
class Solution {
    
public:
    /**
     * @param n an integer
     * @return true if this is a happy number or false
     */
    bool isHappy(int n) {
        // Write your code here
        int sum = n;
        
        while(true)
        {
            sum = numSum(sum);
            if(sum == 4)
            {
                break;
            }
            
            if(sum == 1)
            {
                return true;
            }
        }
        
        
        return false;
    }
    
    int numSum(int n)
    {
        int sum = 0;
        int x;
        while(n != 0)
        {
            x = n % 10;
            n = n /10;
            sum += x * x;
        }
        
        return sum;
    }
};
上一篇 下一篇

猜你喜欢

热点阅读