题目描述
思路分析
摩尔投票算法
和leetcode 169题一样
可以推广到k维,求出现次数不超过n/k的的元素
代码实现
class Solution {
public:
vector<int> majorityElement(vector<int>& nums) {
int n=nums.size();
int r1,r2,c1=0,c2=0;
for(auto x:nums){
if(c1&&x==r1) c1++;
else if(c2&&x==r2) c2++;
else if(!c1) c1++,r1=x;
else if(!c2) c2++,r2=x;
else c1--,c2--;
}
c1=0,c2=0;
for(auto x:nums)
if(x==r1) c1++;
else if(x==r2) c2++;
vector<int> ans;
if(c1>n/3) ans.push_back(r1);
if(c2>n/3) ans.push_back(r2);
return ans;
}
};