LC 229 JS 解决方案

166 阅读1分钟

[思路]

从stackoverflow捞来的算法,快速数出数组中各个数字出现的次数的算法,如下:

var counts = {};
your_array.forEach(function(x) { counts[x] = (counts[x] || 0)+1; });

以上就是这个方案的核心了,

然后再捞了个遍历obj的方法,🐶:

for (var key in yourobject) {
  console.log(key, yourobject[key]);
}

就合成了我们的答案啦:

/**
 * @param {number[]} nums
 * @return {number[]}
 */
var majorityElement = function(nums) {
    let len = nums.length;
    if(len < 1){
        return [];
    }
    if(len < 2){
        return nums;
    }
    let counts = {};
    nums.forEach(function(x) { counts[x] = (counts[x] || 0)+1; });
    let limit = len / 3;
    let result = [];
    for(let key in counts) {
        let val = counts[key];
        if(val > limit){
            result.push(parseInt(key));
        }
    }
    return result;
};

结果

因为算法很给力,导致detail很好看😍