1. 程式人生 > 其它 >前 K 個高頻元素--java

前 K 個高頻元素--java

給你一個整數陣列 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;
    }
}