多數元素
阿新 • • 發佈:2020-07-16
題目:
給定一個大小為 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; } }