力扣链接: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;
}