LeetCode面试题 17.10. 主要元素

这道题主要使用摩尔投票法。

class Solution {
    
    
public:
    int majorityElement(vector<int>& nums) {
    
    
        int major = nums[0];
        int count = 1;

        for (int i = 1;i < nums.size();i++)
        {
    
    
            if (nums[i] == major)
            {
    
    
                count++;
            }
            else
            {
    
    
                count--;
            }

            if (count == 0)
            {
    
    
                major = nums[i];
                count = 1;
            }
        }

        int num = 0;
        for (auto i:nums)
        {
    
    
            if (i == major)
            {
    
    
                num++;
            }
        }

        return num > nums.size() / 2 ? major : -1;
    }
};

猜你喜欢

转载自blog.csdn.net/qq_32862515/article/details/108572774
今日推荐