leetcode-169. 多数元素
多数元素
给定一个大小为 n
的数组 nums
,返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋
的元素。
你可以假设数组是非空的,并且给定的数组总是存在多数元素。
这个题目是某年的408原题,之前做的时候用的哈希表,答案好像是摩尔投票法不过当时没看懂😅
摩尔投票法
规定众数的票数是1,非众数的票数是-1.由于众数的数量大于总元素个数的一半所以票数之和一定大于0.
若数组的前a个数票数之和为0,则后n-a个数的票数之和一定大于0,所以众数一定在后n-a个数中。
设置一个候选众数 maj = nums[0],初始化票数和votes = 0.
遍历数组,对于每一个元素x,若x==maj则votes++。否则votes–
遍历结束后maj即为整个数组的众数
1 | class Solution { |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 面试资料!