文章目录
- 题目描述
- 法一 哈希表
- 法二 摩尔投票
题目描述
法一 哈希表
使用哈希映射(HashMap)来存储每个元素以及出现的次数。对于哈希映射中的每个键值对,键表示一个元素,值表示该元素出现的次数。
class Solution {
public:int majorityElement(vector<int>& nums){unordered_map<int, int> res;int n = nums.size();int cnt=n/2, maj=0;for(auto&num:nums){++res[num];if(res[num]>cnt){maj=num;}}return maj;}
};
法二 摩尔投票
核心理念为 票数正负抵消 。此方法时间和空间复杂度分别为 O(N) 和 O(1)
int majorityElement(vector<int>& nums){int vote=0, x=0;for(auto&num:nums){if(vote==0) x=num;vote += num==x? 1 : -1;}return x;}