您的位置:首页 > 其它

[LeetCode Problem]169:Majority Element查找多数元素

2018-09-29 23:05 441 查看

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.

Example 1:

[code]Input: [3,2,3]
Output: 3

Example 2:

[code]Input: [2,2,1,1,1,2,2]
Output: 2

求一个出现次数超过n/2的数字,那么这种情况下势必只会有一个数字的次数满足这种情况。

思路一:可以利用哈希表直接记录查找,若是次数超过n/2,直接返回数字 

[code]​
class Solution {
public:
int majorityElement(vector<int>& nums) {
int temp=nums.size()/2+1;
unordered_map<int,int> m;
for(int i=0;i<nums.size();i++){
m[nums[i]]++;
if(m[nums[i]]>=temp)
return nums[i];
}
}
};

思路二:可以说是非常机智的一种方法,先对数组进行排序,出现次数超过n/2,那么无论是最小的还是最大的,最中间数字始终是在n/2的范围内

[code]class Solution {
public:
int majorityElement(vector<int>& nums) {
sort(nums.begin(),nums.end());
return nums[nums.size()/2];
}
};

 

阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: