一、问题描述

二、解题思路
**解法一:**排序+返回中位数
由于这个多数元素出现的次数多于n/2,所以排序之后数组的中位数一定是这个元素,返回即可。
**解法二:**哈希表
使用哈希表来记录元素出现的次数,返回这个多数元素。
三、代码实现
解法一:
cpp
class Solution {
public:
int majorityElement(vector<int>& nums) {
//排序+返回中位数
sort(nums.begin(),nums.end());
int n=nums.size();
return nums[n/2];
}
};
解法二:
cpp
class Solution {
public:
int majorityElement(vector<int>& nums) {
//哈希表
int n=nums.size();
unordered_map<int,int> hash;
for(auto x:nums){
hash[x]++;
if(hash[x]>n/2) return x;
}
return 0;
}
};