版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/glw0223/article/details/88840325
分析
class Solution {
public:
vector<int> majorityElement(vector<int>& nums) {
vector<int> out;
int x,y=0;
int cx = 0, cy = 0;
for(auto num : nums)
{
if((cx==0 || num == x) && num != y)
{//为了排除一种情况:当cx==0,但是本次num是y的情况
cx++;
x=num;
}
else if(cy == 0 || num == y)
{
cy++;
y = num;
}
else
{
cx--;
cy--;
}
}
//确定两个值是不是都大于1/3
int count1 = 0,count2=0;
for(auto num : nums)
{
if(x==num){
count1++;
}else if(y==num){
count2++;
}
}
if(count1 > nums.size()/3){
out.push_back(x);
}
if(count2 > nums.size()/3){
out.push_back(y);
}
return out;
}
};