202. Happy Number

202. Happy Number_第1张图片

Javascript,方法取巧了,如果循环更多会错

/**
 * @param {number} n
 * @return {boolean}
 */
var isHappy = function(n) {
    var count=0;
    while(count<1000)
    {
        count++;
        var tmp=0;
        for(var i=0;i

优解,空间复杂度为O(1),这里运用了变成1之后不会变的原理。有点类似快指针和慢指针判断一个link list是否包含环,就解决了不知道要循环几次的问题。

int digitSquareSum(int n) {
    int sum = 0, tmp;
    while (n) {
        tmp = n % 10;
        sum += tmp * tmp;
        n /= 10;
    }
    return sum;
}

bool isHappy(int n) {
    int slow, fast;
    slow = fast = n;
    do {
        slow = digitSquareSum(slow);
        fast = digitSquareSum(fast);
        fast = digitSquareSum(fast);
    } while(slow != fast);
    if (slow == 1) return 1;
    else return 0;
}

你可能感兴趣的:(202. Happy Number)