Skip to content

力扣链接:169.多数元素

难度:⭐

解题关键词:数组

解题思路:类比于士兵占领一块地方,来的第一个士兵将国旗插到上面,然后轮下一个士兵,如果下一个士兵是该阵营的,就继续插一个,再下一个如果不是该阵营的,就可以拔掉一个国旗,到最后,国旗是谁的,多数元素就是谁,因为多数元素的个数大于数组一半元素,所以最后肯定是众数。

typescript
function majorityElement(nums: number[]): number {
  let count = 0;
  let result = null;

  for (let i = 0; i < nums.length; i++) {
    // 这时没有任何阵营的国旗
    if (count === 0) {
      result = nums[i];
    }

    // 是该阵营的
    if (nums[i] === result) {
      count++;
    } else {
      // 不是该阵营的
      count--;
    }
  }

  return result;
}