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