169. Majority Element

1. Description

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.

2. Example

Example 1

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

Example 2

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

3. Constraints

  • n == nums.length
  • 1 <= n <= 5 * $10^4$
  • -$10^9$ <= nums[i] <= $10^9$
  • The input is generated such that a majority element will exist in the array.

4. Solutions

Voting

n = nums.size()
Time complexity: O(n)
Space complexity: O(1)

class Solution {
public:
    int majorityElement(vector<int> &nums) {
        int majority = nums[0], count = 1;
        const int n = nums.size();
        for (int i = 1; i < n; ++i) {
            if (nums[i] == majority) {
                ++count;
            } else {
                --count;

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

        return majority;
    }
};
comments powered by Disqus