-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path169_majority_element.cpp
More file actions
66 lines (53 loc) · 1.47 KB
/
169_majority_element.cpp
File metadata and controls
66 lines (53 loc) · 1.47 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
int majorityElement(vector<int>& nums) {
int candidate = nums[0], votes = 1;
for (int current = 1; current < nums.size(); ++current) {
if (votes == 0) {
candidate = nums[current];
++votes;
} else if (candidate == nums[current]) {
++votes;
} else {
--votes;
}
}
return candidate;
}
};
int main() {
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
vector<int> nums = {2, 2, 1, 1, 1, 2, 2};
Solution solve;
int result = solve.majorityElement(nums);
cout << result << '\n';
return 0;
}
/*
------------------
Problem Statement:
------------------
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:
----------
Input: nums = [3,2,3]
Output: 3
----------
Example 2:
----------
Input: nums = [2,2,1,1,1,2,2]
Output: 2
------------
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.
Follow-up: Could you solve the problem in linear time and in O(1) space?
*/