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) {
        const int n = nums.size();
        int num = nums[0], count = 1;
        for (int i = 1; i < n; ++i) {
            if (count == 0) {
                num = nums[i];
            }

            count += (num == nums[i]) ? 1 : -1;
        }

        return num;
    }
};
comments powered by Disqus