Leetcode: 229.求众数 II
229. 求众数 II
解题思路:
- 遍历计数法
- 先遍历vector,用unordered_map记录下每个数出现的次数
- 逐个判断出现次数是否>nums.size()/3,符合则加入ans中
- 时间复杂度为O(n),空间复杂度为O(n)
- 摩尔投票法
- 根据出现超过⌊ n/3 ⌋次的元素可以得出最多可能有2个这样的元素
- 让互不相同的三个元素互相抵消,最终会得到两个可能符合的元素
- 遍历计数,判断两个元素是否符合,符合则将其加入到ans中
- 时间复杂度为O(n),空间复杂度为O(1)
以下为C++代码:
1 | class Solution { |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 风之歌!
评论