数组中第k个最大元素

class Solution {
    public int findKthLargest(int[] nums, int k) {
        PriorityQueue<Integer> q = new PriorityQueue<Integer>(k, new Comparator<Integer>() {
            @Override
            public int compare(Integer o1, Integer o2) {
                return o2 - o1;
            }
        });
        k--;
        for (int num : nums) {
            q.add(num);
        }
        while (k-- > 0) {
            q.poll();
        }
        return q.peek();
    }
}

前k个高频元素

class Solution {
    public int[] topKFrequent(int[] nums, int k) {
        HashMap<Integer, Integer> map = new HashMap<>();
        for (int num : nums) {
            if (map.containsKey(num)) {
                map.merge(num, 1, Integer::sum);
            }else {
                map.put(num, 1);
            }
        }
        PriorityQueue<Integer> q =new PriorityQueue<>(new Comparator<Integer>() {
            @Override
            public int compare(Integer o1, Integer o2) {
                return map.get(o2) - map.get(o1);
            }
        });
        for (Integer key : map.keySet()) {
            q.offer(key);
        }
        int[] res = new int[k];
        int i = 0;
        while (k-- > 0) {
            res[i++] = q.poll();
        }
        return res;
    }
}
posted @ 2023-05-11 10:17  你在学什么  阅读(14)  评论(0)    收藏  举报