面试题39:数组中出现次数超过一半的数
文章目录
题目
数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。
你可以假设数组是非空的,并且给定的数组总是存在多数元素。
LeetCode版本
摩尔计数法
class Solution{
public:
int majorityElement(vector<int> &nums){
int temp = nums[0], count = 1;
for(int i = 1;i < nums.size(); i++){
if(nums[i] == temp){
count ++;
}
else{
if(--count == 0){
temp = nums[i];
count = 1;
}
}
}
return temp;
}
};