您的位置:首页 > 其它

leecode_229 Majority Element II

2016-07-26 02:22 399 查看
Given an integer array of size n,
find all elements that appear more than 
⌊ n/3 ⌋
 times.
The algorithm should run in linear time and in O(1) space.

这样的元素最多两个

//solution from bernini
class Solution {
public:
vector<int> majorityElement(vector<int>& nums) {
int res1 = INT_MIN;
int res2 = INT_MAX;
int count1=0;
int count2=0;

for (int i=0;i<nums.size(); i++) {
if (count1==0 && nums[i] != res2) {
res1=nums[i];
count1=1;
continue;
}
if (count2==0 && nums[i] != res1) {
res2=nums[i];
count2=1;
continue;
}
if (nums[i] == res1) {
count1++;
continue;
}
if (nums[i] == res2) {
count2++;
continue;
}
if (nums[i]!=res1 && nums[i]!= res2) {
count1--;
count2--;
}
}
count1=0;
count2=0;
for (int i=0;i<nums.size();i++) {
if (nums[i]==res1)
count1++;
if (nums[i]== res2)
count2++;
}
vector<int> res;
if (count1>nums.size()/3)
res.push_back(res1);
if (count2>nums.size()/3)
res.push_back(res2);

return res;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: