LeetCode 169 Majority Element 求众数

解法一:哈希表

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

猜你喜欢

转载自blog.csdn.net/qq_34501451/article/details/83067787