Open fockspaces opened 1 year ago
摩爾投票法,當目前最大黨票數被其他黨合計抵銷時,當前黨變為最大黨
class Solution {
public:
int majorityElement(vector<int>& nums) {
int majority = nums[0], count = 1;
for(int i = 1; i < nums.size(); i++) {
if(nums[i] != majority) count--;
else count++;
if(count < 0) {majority = nums[i]; count = 1;}
}
return majority;
}
};
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 * 104 -109 <= nums[i] <= 109
Follow-up: Could you solve the problem in linear time and in O(1) space?