题目描述
Given an array of size n, find the majority element. The majority element is the element that appears more than ⌊ n/2 ⌋ times.
You may assume that the array is non-empty and the majority element always exist in the array.
Example 1:
Input: [3,2,3]
Output: 3
Example 2:
Input: [2,2,1,1,1,2,2]
Output: 2
思路
只记录当前出现次数最多的数字,如果新出现的次数和之前的数字相等,次数++,否则–。次数<0时,更新次数最多的数字。
代码
class Solution {
public:
int majorityElement(vector<int>& nums) {
int num = nums[0];
int cnt = 1;
for (int i=1; i<nums.size(); ++i) {
if (nums[i] == num) cnt++;
else {
cnt--;
if (cnt < 0) {
num = nums[i];
cnt = 1;
}
}
}
return num;
}
};