解法一:哈希表
class Solution {
public:
int majorityElement(vector<int>& nums) {
int n=nums.size();
unordered_map<int,int> count;
for(int i=0;i<n;i++)
{
if(++count[nums[i]]>n/2)
return nums[i];
}
}
};
解法二:摩尔投票法
class Solution {
public:
int majorityElement(vector<int>& nums) {
int res=0,cnt=0;
for(auto num:nums)
{
if(cnt==0)
{
res=num;
++cnt;
}
else
(num==res)?++cnt:--cnt;
}
return res;
}
};
解法三:
class Solution {
public:
int majorityElement(vector<int>& nums) {
int i,t=nums[0],cnt=1;
for(i=1;i<nums.size();i++)
{
if(nums[i]!=t)
{
if(cnt==0)
{
t=nums[i];
cnt=1;
}
else
--cnt;
}
else
++cnt;
}
return t;
}
};