您的位置:首页 > 其它

LeetCode---Majority Element II

2015-11-09 20:35 204 查看
题目大意:给出一个数组,找出数组中元素出现次数大于数组1/3规模的元素,要求算法运行时间在线性时间内,空间复杂度为O(1);

算法思想:

1.首先对数组排序。

2.利用upper_bound()算法找出出现次数大于数组规模1/3的元素。

代码如下:

class Solution {
public:
vector<int> majorityElement(vector<int>& nums) {
vector<int> res;
int nums_size=0;
if(nums.size()==0) return res;
int times=nums.size()/3;
sort(nums.begin(),nums.end());
vector<int>::iterator pos=nums.begin(),prepos=nums.begin();
int value=*pos;
while(pos!=nums.end()){
pos=upper_bound(nums.begin(),nums.end(),value);
if(pos-prepos>times) res.push_back(value);
value=*pos;
prepos=pos;
}
return res;

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