题目
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.
翻译
给定一个数组,大小为n,找出所有出现超过n/2次的元素。
可以假设,数组非空,且多数数一直存在。
思路
首先可能出现的结果
0个,1个
那么如果这个数存在,假设为a,则a出现的次数,超过非a出现的次数。那么遇到a就加1,不是a就减一。
代码
class Solution {
public:
int majorityElement(vector<int>& nums) {
int i;
int times = 0;
int candidate = 0;
for(i = 0;i < nums.size(); i++){
if(times == 0){
candidate = nums[i];
times = 1;
}
else{
if(nums[i] == candidate){
times ++;
}else{
times --;
}
}
}
return candidate;
}
};