文章目录
- 题目描述
- 法一 哈希表
- 法二 摩尔投票
 
 
题目描述

法一 哈希表
使用哈希映射(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;
	}




















