[思路]
从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很好看?