方法一(排序+查找,复杂度O(nlogn)
class Solution {
public:
int majorityElement(vector<int> &num) {
sort(num.begin(), num.end());
int ans=0, ans_t=num.size()/2-1, pre=num[0], t=0;
for(int i=0; i<num.size(); i++){
if(pre==num[i]){
t++;
}
else{
if(t>ans_t){
ans_t=t;
ans=pre;
}
t=1;
pre=num[i];
}
}
if(t>ans_t){
ans=pre;
}
return ans;
}
}<span style="font-family: Arial, Helvetica, sans-serif;">;</span>
方法二:(随机数法,众数所占比例大于1/2,复杂度O(N)class Solution {
public:
int majorityElement(vector<int> &num) {
srand((unsigned)time(NULL));
while(true){
int p = rand()%num.size();
int t=0;
for(int i=0; i<num.size(); i++){
if(num[p]==num[i])
t++;
}
if(t>num.size()/2)
return num[p];
}
}
};