1. 程式人生 > 實用技巧 >多數元素

多數元素

題目:

給定一個大小為 n 的陣列,找到其中的多數元素。多數元素是指在陣列中出現次數大於 ⌊ n/2 ⌋ 的元素。

你可以假設陣列是非空的,並且給定的陣列總是存在多數元素。



示例 1:

輸入: [3,2,3]
輸出: 3

示例 2:

輸入: [2,2,1,1,1,2,2]
輸出: 2

來源:力扣(LeetCode)
連結:https://leetcode-cn.com/problems/majority-element
著作權歸領釦網路所有。商業轉載請聯絡官方授權,非商業轉載請註明出處。

分析:

這道題目讓我想到了可以排序後,再統計個數,或者利用hashmap中key唯一的特性,遍歷陣列存入hashmap,鍵為陣列元素本身,值為出現的次數,然後選出其中滿足條件的多數元素即可。略微糾結了一下,然後果斷嘗試了第二種想法,做完之後,看了一下別人的答案,果然還是我太年輕,又是日常羨慕別人的思路中。按照慣例,先記錄一下自己的程式碼,以後再慢慢研究更優化的解法。

程式碼:

class Solution {
    public int majorityElement(int[] nums) {
        Map<Integer, Integer> map = new HashMap<>();
        Integer cache = null;
        for (int i : nums) {
            cache = map.get(i);
            if (cache == null) {
                map.put(i, 1);
            } 
else { map.put(i, cache + 1); } } cache = 0; for (int i : map.keySet()) { int j = map.get(i); if (cache < j && j > nums.length / 2) { cache = i; } } return cache; } }