169. Majority Element

169. Majority Element

Description

Difficulty: Easy

Related Topics: Array, Hash Table, Divide and Conquer, Sorting, Counting

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:

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

Example 2:

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

Constraints:

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

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

Hints/Notes

  • use a count variable to solve it in O(1) space

Solution

Language: C++

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class Solution {
public:
    int majorityElement(vector<int>& nums) {
        int target = nums[0];
        int count = 0;
        for (int num : nums) {
            if (count == 0) {
                target = num;
                count++;
            } else if (num == target) {
                count++;
            } else {
                count--;
            }
        }
        return target;
    }
};