1.利用字典
var majorityElement = function (nums) {
let map = new Map();
for (let i = 0; i < nums.length; i++) {
if (!map.has(nums[i]))
map.set(nums[i], 1);
else
map.set(nums[i], map.get(nums[i]) + 1);
}
for (let [key, value] of map.entries()) {
if (value > nums.length / 2)
return key;
}
};
2.利用栈
var majorityElement = function (nums) {
let stack=[];
for(let i=0;i<nums.length;i++){
if(stack.length==0||stack[stack.length-1]==nums[i]){
stack.push(nums[i]);
}
else stack.pop();
}
return stack[0];
};
3.利用抵消
var majorityElement = function(nums) {
let sum=0;
let target=0;
for(let i=0;i<nums.length;i++){
if(sum==0) target=nums[i];
nums[i]==target?sum++:sum--;
}
return target;
};