前 K 個高頻元素--java
阿新 • • 發佈:2021-10-14
給你一個整數陣列 nums 和一個整數 k ,請你返回其中出現頻率前 k 高的元素。你可以按 任意順序 返回答案。
示例 1:
輸入: nums = [1,1,1,2,2,3], k = 2
輸出: [1,2]
示例 2:
輸入: nums = [1], k = 1
輸出: [1]
來源:力扣(LeetCode)
連結:https://leetcode-cn.com/problems/top-k-frequent-elements
著作權歸領釦網路所有。商業轉載請聯絡官方授權,非商業轉載請註明出處。
class Solution { public int[] topKFrequent(int[] nums, int k) { int[] result = new int[k];//新建k長度的陣列 HashMap<Integer,Integer> map = new HashMap<>();//新建泛型的雜湊表 for(int i = 0;i<nums.length;i++){ //用一個雜湊表獲取每種元素出現的次數 int num = nums[i];//num為key map.put(num,map.getOrDefault(num,0) + 1);//把每個鍵的預設值設為0 } List<Map.Entry<Integer,Integer>> list=new ArrayList<Map.Entry<Integer,Integer>>(map.entrySet());//適合用set集合新建Entry物件的列表 //從大到小排序,更新比較器 Collections.sort(list,(o1,o2)->(o2.getValue()-o1.getValue())); //輸出前k個元素 for(int i=0;i<k;i++){ result[i]=list.get(i).getKey(); } return result; } }