题目链接:
https://leetcode.cn/problems/majority-element/
官方讲解:https://leetcode.cn/problems/majority-element/solutions/146074/duo-shu-yuan-su-by-leetcode-solution/
看到题目第一眼,我直接想用哈希表计数,统计每个数的出现次数,超过数组长度一半就直接返回。写完后才发现题目有进阶要求,需要O(1)的空间复杂度,于是开始思考更优的解法。通过对着示例 [2,2,1,1,1,2,2] 手算模拟了好几遍摩尔投票的过程,我才搞明白这个算法的原理。
遇到的困难:一开始摩尔投票的逻辑老搞混,count什么时候归零、什么时候换候选数,写代码的时候好几次条件写反了。还有数组长度为1的时候,一开始没考虑到,调试的时候直接报错了,后来才补上的。