LeetCode 169. 求众数

  • 题目:
    给定一个大小为 n 的数组,找到其中的众数。众数是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。

你可以假设数组是非空的,并且给定的数组总是存在众数。

示例 1:

输入: [3,2,3]
输出: 3

示例 2:

输入: [2,2,1,1,1,2,2]
输出: 2

  • 解题思路
    由于众数是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素,设置一个计数器count,若遇到相同的元素则加一,否则减一。当count减到0时,更新众数的值。

代码实现

   int majorityElement(vector<int>& nums) {
        int res = nums[0];
        int count =1;
        for(int i = 1; i < nums.size(); i++) {
            if(res == nums[i])
                count++;
            else {
                count--;
                if(count== 0)
                {
                    res = nums[i];
                    count = 1;
                }
            }
        }
        return res;
    }

猜你喜欢

转载自blog.csdn.net/xiao1guaishou/article/details/87967172
今日推荐