Leetcode 202 Happy Number Javascript 解決方案

pimkle發表於2018-12-12

題意

原題連結

思路

那個陣列存一下。出現迴圈數肯定就不 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;
};
複製程式碼

相關文章