Leetcode 202 Happy Number Javascript 解决方案

359 阅读1分钟

题意

原题链接

思路

那个数组存一下。出现循环数肯定就不 OK 了。
用 普通数组,比用 Set 快。
用 普通 for 循环 应该会比 用 reduce

代码

/**
 * @param {number} n
 * @return {boolean}
 */
var isHappy = function(n) {
    function cal(val = n){
        if(!val){
            return -1;
        }
        val = (val + '').split('');
        let sum = 0;
        for(let i = 0; i < val.length; ++i){
            sum += Math.pow(val[i], 2);
        }
        return sum;
    }
    let q = []; // 摈弃 Set 会快一点
    let res = cal();
    while(res !== 1){
        if(res <= 0){
            return false;
        }
        if(q.indexOf(res) > -1){
            return false;
        }
        q.push(res);
        res = cal(res);
    }
    return true;
};