169. 多數元素
阿新 • • 發佈:2021-01-22
技術標籤:LeetCode
169. 多數元素——2021.01.21
題目
給定一個大小為 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) {
int count = nums.size();
int major = 0;
unordered_map<int,int> nmap;
for(auto num:nums){
nmap[num]++;
if(nmap[num]>count/2){
major = num;
break;
}
}
return major;
}
};
查看了官方解答,發現可以進行排序,因為其中的多數元素大於元素總和的一半,那麼排序後,中間元素一定是多數元素。
class Solution {
public:
int majorityElement(vector<int>& nums) {
sort(nums.begin(),nums.end());
return nums[nums.size()/2];
}
};