标签:
解决本道题的思路是:
第一步:预排序,数组变成有序状态。
第二步:统计各个元素出现的次数,得到主元。
在第一步中如果使用自己编写的冒泡排序,将会出现time limit exceed,所以改用STL的排序(很赞的参考)
class Solution {
public:
int majorityElement(vector<int>& nums) {
vector<int>::iterator iter1,iter2;
//use STL sort function
sort(nums.begin(), nums.end());
//use my own bubble sort function;
/*int tmp;
for(iter2 = nums.end() - 1; iter2 != nums.begin(); iter2--) {
for(iter1 = nums.begin(); iter1 < iter2; iter1++) {
if(*iter1 > *(iter1 + 1)) {
tmp = *iter1;
*iter1 = *(iter1 + 1);
*(iter1 + 1) = tmp;
}
}
}*/
int counter;
int lengthMajority = nums.size() / 2;
for(iter1 = nums.begin(); iter1 < nums.end(); iter1 = iter1 + counter) {
counter = 0;
for(iter2 = iter1; iter2 != nums.end(); iter2++) {
if(*iter2 == *iter1)
counter++;
else
break;
}
if(counter > lengthMajority)
break;
}
return *iter1;
}
};
版权声明:本文为博主原创文章,未经博主允许不得转载。
标签:
原文地址:http://blog.csdn.net/guanzhongshan/article/details/46771209