链接:169. 多数元素 - 力扣(LeetCode)
这道题正常很简单,但是如果想要完成进阶做法有点困难。我使用了O(n/2)左右的空间,使用了哈希映映射。
看了题解,有一种解法叫摩尔投票,可以解决这种问题,还是很巧妙的。它利用了不同数互相抵消,最后留下超过半数的数。
我的代码:
class Solution {
public:int majorityElement(vector<int>& nums) {unordered_map<int,int> hm;for(int i=0;i<nums.size();i++)if(++hm[nums[i]]>nums.size()/2) return nums[i];return 0;}
};
摩尔投票代码,请点击链接查看:169. 多数元素 - 力扣(LeetCode)