剑指 Offer 39. 数组中出现次数超过一半的数字

剑指 Offer 39. 数组中出现次数超过一半的数字

  • 题目描述
  • 代码实现

题目描述

数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。

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

示例 1:

输入: [1, 2, 3, 2, 2, 2, 5, 4, 2]
输出: 2

限制:

1 <= 数组长度 <= 50000

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/shu-zu-zhong-chu-xian-ci-shu-chao-guo-yi-ban-de-shu-zi-lcof

代码实现

class Solution {
public:
    int majorityElement(vector<int>& nums) {
        std::map<int, int> stat;
        int mode = nums[0];
        int mode_count = 1;
        for(int i = 0; i < nums.size(); i++){
            stat[nums[i]] = stat[nums[i]] + 1;
            if(stat[nums[i]] > mode_count){
                mode_count = stat[nums[i]];
                mode = nums[i];
            }
        }
        return mode;
    }
};

你可能感兴趣的:(剑指Offer)