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;
}
};