问题
思路
- 利用hashmap c++ unordered_map<int,int> 第一个为键,第二个存储出现次数为值,判断值是否>n>>1
- 利用排序,排序后数出现位置肯定在n/2, sort(); 取n/2;
- 利用概率随机取一个数,概率贼大 n/2 /n 概率为百分之50;
代码
class Solution {
public:
int majorityElement(vector<int>& nums) {
int n = nums.size();
int time = n >> 1;
unordered_map <int,int> hash;
for(auto num:nums)
{
//cout<<num;
hash[num]++;
if(hash[num]>time)
return num;
}
return 0;
}
};