https://leetcode-cn.com/problems/majority-element/ 位运算、数组、分治算法
哈希表
function majorityElement(nums: number[]): number {
const map = new Map<number, number>()
const mid = nums.length >> 1
for (let item of nums) {
let value = map.get(item) || 0
if(value === mid) {
return item
}
map.set(item, value + 1)
}
return -1
};
排序
function majorityElement(nums: number[]): number {
return nums.sort()[nums.length >> 1]
};
投票算法
function majorityElement(nums: number[]): number {
let count = 0
let candidate = 0
for(let item of nums) {
if(count === 0) {
candidate = item
}
count += item === candidate ? 1 : -1
}
return candidate
};