Majority Element II

Given an integer array of size n, find all elements that appear more than ⌊ n/3 ⌋ times.

Follow-up: Could you solve the problem in linear time and in O(1) space?

Example 1:


Input: nums = [3,2,3]
Output: [3]

Example 2:


Input: nums = [1]
Output: [1]

Example 3:


Input: nums = [1,2]
Output: [1,2]

Constraints:

  • 1 <= nums.length <= 5 * 104

  • -109 <= nums[i] <= 109

Solutions

🧠 Cpp

class Solution
{
public:
    vector<int> majorityElement(vector<int>& nums)
    {
        std::map<int, size_t> marks;

        for(auto &num : nums)
            marks[num]++;

        const int limit = nums.size() / 3;
        vector<int> res;

        for(auto &mark : marks)
            if(mark.second > limit)
                res.push_back(mark.first);

        return res;
    }
};

Last updated