class Solution {
public:
vector<int> majorityElement(vector<int>& nums) {
vector<int>ivec;
int num1=0,num2=0,cnt1=0,cnt2=0;
int len=nums.size();
for(int i=0;i<len;i++)
{
if(num1==nums[i])
cnt1++;
else if(num2==nums[i])
cnt2++;
else if(cnt1==0)
num1=nums[i],cnt1++;
else if(cnt2==0)
num2=nums[i],cnt2++;
else //不同都要减去;
cnt1--,cnt2--;
}
cnt1=0;
cnt2=0;
for(int i=0;i<len;i++)
{
if(nums[i]==num1)
cnt1++;
if(nums[i]==num2)
cnt2++;
}
if(cnt1>len/3)
ivec.push_back(num1);
if(cnt2>len/3&&num2!=num1) //注意,如果相等就去掉
ivec.push_back(num2);
return ivec;
}
};
public:
vector<int> majorityElement(vector<int>& nums) {
vector<int>ivec;
int num1=0,num2=0,cnt1=0,cnt2=0;
int len=nums.size();
for(int i=0;i<len;i++)
{
if(num1==nums[i])
cnt1++;
else if(num2==nums[i])
cnt2++;
else if(cnt1==0)
num1=nums[i],cnt1++;
else if(cnt2==0)
num2=nums[i],cnt2++;
else //不同都要减去;
cnt1--,cnt2--;
}
cnt1=0;
cnt2=0;
for(int i=0;i<len;i++)
{
if(nums[i]==num1)
cnt1++;
if(nums[i]==num2)
cnt2++;
}
if(cnt1>len/3)
ivec.push_back(num1);
if(cnt2>len/3&&num2!=num1) //注意,如果相等就去掉
ivec.push_back(num2);
return ivec;
}
};