🧩Algo 技巧
169. 多数元素
难度:🟢 Easy | 标签:摩尔投票 | 状态:⬜ LeetCode 链接
思路
摩尔投票:候选 + 计数。
- 计数为 0 → 换候选
- 当前元素等于候选 → +1
- 不等 → -1
因为多数元素出现次数 > n/2,最终候选一定是答案。
代码
class Solution {
public:
int majorityElement(vector<int>& nums) {
int cand = 0, cnt = 0;
for (int x : nums) {
if (cnt == 0) cand = x;
cnt += (x == cand) ? 1 : -1;
}
return cand;
}
};
复杂度
- 时间 O(n),空间 O(1)
易错 / 回顾
- 题目保证多数元素存在,所以不用第二次验证
- 不存在保证时要再扫一次验证
- 229(多数 ≥ n/3):扩展到双候选
Related · 技巧