https://leetcode-cn.com/problems/majority-element/ 位运算、数组、分治算法

哈希表

  1. function majorityElement(nums: number[]): number {
  2. const map = new Map<number, number>()
  3. const mid = nums.length >> 1
  4. for (let item of nums) {
  5. let value = map.get(item) || 0
  6. if(value === mid) {
  7. return item
  8. }
  9. map.set(item, value + 1)
  10. }
  11. return -1
  12. };

排序

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
};