题目链接:https://leetcode-cn.com/problems/majority-element/
题目如下:
class Solution {
public:
int majorityElement(vector<int>& nums) {
//摩尔投票算法:
//1、如果候选人不是candidate,则candidate会和其他非候选人一起反对候选人,所以候选人一定会下台(count==0时发生换届选举)
//2、如果候选人是candidate,则candidate会支持自己,其他候选人会反对,同样因为candidate票数超过一半,所以candidate一定会成功当选
int candidate=-1;
int count=0;
for(auto num:nums){
if(count==0) {candidate=num;++count;}
else if(num==candidate) ++count;
else --count;
}
return candidate;
}
};