我的解题:
1.使用unordered_map记录每个数值出现的次数,当等于数组长度一半时返回该数
class Solution {
public:
int majorityElement(vector<int>& nums) {
int mid=(nums.size()+1)/2;
unordered_map<int,int> m;
for(int c:nums){
if(m.count(c)){
m[c]++;
if(m[c]>=mid) return c;
}
else{
m[c]=1;
if(m[c]>=mid) return c;
}
}
return 0;
}
};
2.因为该数的次数最后,所以他比所有数加在一起次数还多
class Solution {
public:
int majorityElement(vector<int>& nums) {
int count=0;
int res;
for(int c:nums){
if(count==0){ res=c;
count=1;
}
else{
if(res==c) count++;
else count--;
}
}
return res;
}
};