刷题日期2026.4.24题目169. 多数元素难度简单语言C 语言官方题解https://leetcode.cn/problems/majority-element/solutions/146074/duo-shu-yuan-su-by-leetcode-solution/一、看到题目的第一想法题目要求找数组中出现次数 n/2的元素且一定存在。第一反应暴力统计次数可以做但效率低排序后中间一定是多数元素最优解法摩尔投票法O (n) 时间 O (1) 空间二、解题思路摩尔投票法核心思想众数出现次数比其他所有数加起来还多。设一个候选人candidate一个计数器count遇到相同数字count遇到不同数字count--count0 时更换当前数为新候选人遍历结束剩下的候选人就是多数元素。三、AC 代码C 语言c运行int majorityElement(int* nums, int numsSize) { int count 0; int candidate 0; for (int i 0; i numsSize; i) { // 票数归零换新候选人 if (count 0) { candidate nums[i]; } // 相同1不同-1 count (nums[i] candidate) ? 1 : -1; } return candidate; }四、实现过程中遇到的困难第一次听说摩尔投票法很难理解多看两遍示例模拟就懂了抵消 胜出。✅ 解决多数元素一定能 “活” 到最后。不知道初始值怎么设candidate 随便设count0 会自动覆盖。✅ 解决count0 时更新候选人。担心边界出错题目保证一定存在多数元素不用额外判断。五、今日收获心得学会摩尔投票法找多数元素最优解时间 O (n)空间 O (1)算法界经典思路。题目条件非常重要出现次数 n/2是摩尔投票法生效的关键。代码越写越短思路越来越强短短几行解决问题这就是算法魅力。刷题体系越来越完整数组题型总结查找 → 二分删除 / 去重 → 快慢指针连续子数组 → 滑动窗口螺旋矩阵 → 四边界多数元素 → 摩尔投票法六、总结LeetCode 169 是摩尔投票法入门经典题。记住模板count0 换候选人相同 1不同 - 1直接秒杀坚持每日一题算法稳步提升