原地数组
时间复杂度空间复杂度较高
/**
* @param {number[]} nums
* @return {number}
*/
var majorityElement = function(nums) {
let len = nums.length;
let arr = Array(50000).fill(0);
for(let i=0;i<len;i++){
if(!arr[nums[i]]){
arr[nums[i]]=1;
}else{
arr[nums[i]]++;
}
}
let res = arr.findIndex((e)=>{
return e>(len/2);
})
console.log(arr);
return res;
};
摩尔计票
第一次听说的方法:
只需要一遍循环
//摩尔投票
var majorityElement = function(nums) {
let ans = 0, count = 0;
for(let i = 0; i < nums.length; i++){
if(!count) { //若当前票数已经为0,则更换胜出者
ans = nums[i];
count++;
}else count += nums[i] === ans ? 1 : -1; //若下一个相同+1,不同—1
}
return ans;
};
时间复杂度On
空间复杂度O1
从一道简单题中学到的新方法