给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。
你可以假设数组是非空的,并且给定的数组总是存在多数元素。
示例 1:
输入: [3,2,3]
输出: 3
示例 2:
输入: [2,2,1,1,1,2,2]
输出: 2
这是灵机一动的代码,虽然效率不高,但好玩哈哈,当然还要继续优化
class Solution {
public:
int majorityElement(vector<int>& nums) {
map<int,int>table = {{nums[0],1}};
for(int i = 1;i < nums.size();i++){
if(table.count(nums[i]) == 0){
table.insert(map<int, int>::value_type(nums[i],1));
}else{
table[nums[i]] += 1;
}
}
map<int, int>::reverse_iterator iter;
iter = table.rbegin();
int m = iter->second,n = iter->first;
for(;iter != table.rend(); iter++){
if(m < iter->second){
m = iter->second;
n = iter->first;
}
}
return n;
}
};