题意:在一个数组里找到所有重复次数大于n/3的数字个数。
题解:可以用hash,但是题目要求线性时间和O(1)的空间
我是看题解的才想到。
代码语言:javascript复制class Solution {
public:
vector<int> majorityElement(vector<int>& nums) {
int num1;
int num2;
int count1=0;
int count2=0;
for(int i=0;i<nums.size();i )
{
if(count1!=0&&nums[i]==num1)
{
count1 ;
continue;
}
if(count2!=0&&nums[i]==num2)
{
count2 ;
continue;
}
if(count1==0)
{
num1 = nums[i];
count1 ;
continue;
}
if(count2==0)
{
num2 = nums[i];
count2 ;
continue;
}
count1--;
count2--;
}
vector<int> ans;
int count11=0;
int count22=0;
for(int i=0;i<nums.size();i )
{
if(count1!=0&&nums[i]==num1)
count11 ;
if(count2!=0&&nums[i]==num2)
count22 ;
}
if(count11>nums.size()/3)
ans.push_back(num1);
if(count22>nums.size()/3)
ans.push_back(num2);
return ans;
}
};