class Solution {
public:
int majorityElement(vector<int>& nums) {
int n = nums.size();
unordered_map<int,int>mp;
for(int n:nums){
mp[n] += 1;//用map记录nums中元素的次数,map的key为num中元素,value为元素出现次数
}
unordered_map<int,int>::iterator it;
for(it = mp.begin(); it != mp.end(); it++){//遍历map
if(it->second > n/2){//如果次数大于n/2
return it->first;//返回这个数
}
}
return {};
}
};
class Solution {
public:
int majorityElement(vector<int>& nums) {
unordered_map<int,int>mp;
for(int n:nums){
mp[n] += 1;//用map记录nums中元素的次数,map的key为num中元素,value为元素出现次数
if(mp[n] > nums.size()/2){
return n;
}
}
return {};
}
};
class Solution {
public:
int majorityElement(vector<int>& nums) {
sort(nums.begin(),nums.end());
return nums[nums.size()/2];
}
};
class Solution {
public:
int majorityElement(vector<int>& nums) {
while(true){
int candidate = nums[rand()%nums.size()];
int count = 0;
for(int n : nums){
if(n == candidate){
count++;
}
if(count > nums.size()/2){
return candidate;
}
}
}
return -1;
}
};