​Boyer-Moore 投票算法​

#define debug(x) cout<<#x<<": "<<(x)<<endl;

class Solution {
public:
int majorityElement(vector<int>& nums) {
int cnt = 0;
int cd = -1;
for(auto& i:nums){
if(cnt == 0){
cd = i;
cnt = 1;
}else{
if(cd == i){
++cnt;
}else{
--cnt;
}
}
}
cnt=0;
for(auto& i:nums){
if(i==cd){
++cnt;
}
}
if(cnt*2>nums.size()){
return cd;
}
return -1;
}
};

面试题 17.10. 主要元素 【Boyer-Moore 投票算法】_#define