[leetcode]169. Majority Element
Analysis
ummmm~—— [ummmm~]
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.
给定一个数组,然后返回出现次数最多的那个数。第一个方法很简单,就是先对数组进行排序,那么出现次数最多的那个数一定会排在数组的[n/2]位置上。第二种方法是用hashtable解决。
Implement
方法一:
class Solution {
public:
int majorityElement(vector<int>& nums) {
sort(nums.begin(), nums.end());
int len = nums.size();
return nums[len/2];
}
};
方法二:
class Solution {
public:
int majorityElement(vector<int>& nums) {
int len = nums.size();
if(len == 1)
return nums[0];
map<int, int> mymap;
for(int i=0; i<len; i++){
if(mymap.count(nums[i])){
mymap[nums[i]]++;
if(mymap[nums[i]] > len/2)
return nums[i];
}
else
mymap[nums[i]] = 1;
}
}
};