LeetCodeHot100 堆 215. 数组中的第K个最大元素 347. 前 K 个高频元素

215. 数组中的第K个最大元素
https://leetcode.cn/problems/kth-largest-element-in-an-array/description/?envType=study-plan-v2&envId=top-100-liked

public int findKthLargest(int[] nums, int k) {
        PriorityQueue<Integer> queue = new PriorityQueue<>((o1, o2) -> o2-o1);
        for (int num : nums) {
            queue.offer(num);
        }
        for (int i = 0; i < k - 1; i++) {
            queue.poll();
        }
        return queue.poll();
    }

总结:优先级队列
347. 前 K 个高频元素
https://leetcode.cn/problems/top-k-frequent-elements/description/?envType=study-plan-v2&envId=top-100-liked

public int[] topKFrequent(int[] nums, int k) {
        int[] res = new int[k];
        HashMap<Integer,Integer> map = new HashMap<>();
        for (int num : nums) {
            Integer count = map.getOrDefault(num, 0) + 1;
            map.put(num,count);
        }
        PriorityQueue<Integer> priorityQueue = new PriorityQueue<>(( o1,  o2) -> map.get(o2) - map.get(o1));
        for (Integer integer : map.keySet()) {
            priorityQueue.add(integer);
        }
        for (int i = 0; i < k; i++) {
            res[i] = priorityQueue.poll();
        }
        return res;
    }

总结:hashmap存,优先级队列排序

posted @ 2024-03-23 09:59  jeasonGo  阅读(22)  评论(0)    收藏  举报