1. 程式人生 > 其它 >169. 多數元素

169. 多數元素

技術標籤: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];
    }
};

在這裡插入圖片描述