leetcode 229. 求众数 II c++

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/glw0223/article/details/88840325

229. 求众数 II

分析

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;
    }
};

猜你喜欢

转载自blog.csdn.net/glw0223/article/details/88840325
今日推荐