题目:Given an array of size n, find the majority element. The majority element is the element that appears more than ⌊ n/2 ⌋
times.
You may assume that the array is non-empty and the majority element always exist in the array.
解法一:每看到两个不同的元素就删除,那剩下的就是要求的啦!
class Solution {
public:
int majorityElement(vector<int> &num) {
int a,anum=0,i=0;
while(i<num.size()){
if(anum==0)a=num[i],anum=1;
else
if(num[i]==a)anum++;
else anum--;
i++;
}
return a;
}
};
解法二:随机算法,先随机数组中的一个数,然后暴力检查是否符合要求(可适当在检查时边检查边删除不符合的数)!
class Solution {
public:
int majorityElement(vector<int> &num) {
while(1){
int i=0,rcount=0,r=rand()%num.size();
r=num[r];
while(i<num.size()){
if(num[i]==r)rcount++;
i++;
}
if(rcount>num.size()/2)
return r;
}
}
};