Skip to content

0169. Majority Element

Given an array nums of size n, return the majority element.

The majority element is the element that appears more than ⌊n / 2⌋ times. You may assume that the majority element always exists in the array.

Example 1:

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

Example 2:

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

Constraints:

  • n == nums.length
  • 1 <= n <= 5 * 104
  • -231 <= nums[i] <= 231 - 1

Analysis

Using Boyer-Moore majority vote algorithm.

Screen Shot 2020-08-30 at 1.26.24 PM.png

  • Time: O(n)
  • Space: O(1)

Code

class Solution {
public:
    int majorityElement(vector<int>& nums) {
        int cnt = 0, candidate = nums[0];
        for (int e : nums) {
            if (cnt == 0) candidate = e, cnt = 1;
            else if (candidate == e) cnt++;
            else cnt--;
        }
        return candidate;

    }
};

Last update: April 1, 2022