229. Majority Element II
problem description
Input: [3,2,3]
Output: [3]Input: [1,1,1,3,3,2,2,2]
Output: [1,2]algorithm analysis
code
algorithm analysis
Last updated
Input: [3,2,3]
Output: [3]Input: [1,1,1,3,3,2,2,2]
Output: [1,2]Last updated
class Solution {
public:
vector<int> majorityElement(vector<int>& nums) {
vector<int> res;
if(nums.size()==0)
return res;
int candidate1=nums[0];
int candidate2=nums[0];
int count1=0;
int count2=0;
for(int i:nums){
if(i==candidate1){
count1++;
continue;
}
if(i==candidate2){
count2++;
continue;
}
if(count1==0){
candidate1=i;
count1=1;
continue;
}
if(count2==0){
candidate2=i;
count2=1;
continue;
}
count1--;
count2--;
}
count1=0;
count2=0;
for(int i:nums){
if(i==candidate1)
count1++;
else if(i==candidate2)
count2++;
}
if(count1>nums.size()/3)
res.push_back(candidate1);
if(count2>nums.size()/3)
res.push_back(candidate2);
return res;
}
};