Step-by-Step

[Java] Daily LeetCode Challenge 347. Top K Frequent Elements 본문

언어/JAVA

[Java] Daily LeetCode Challenge 347. Top K Frequent Elements

희주(KHJ) 2023. 5. 23. 21:46

https://leetcode.com/problems/kth-largest-element-in-a-stream/

 

Kth Largest Element in a Stream - LeetCode

Can you solve this real interview question? Kth Largest Element in a Stream - Design a class to find the kth largest element in a stream. Note that it is the kth largest element in the sorted order, not the kth distinct element. Implement KthLargest class:

leetcode.com

 

HashMap으로 빈도 count 값 저장해준다!

pq로 빈도 순으로 정렬해주고, poll 해주면 됨!

 

[코드]

class Solution {
    public int[] topKFrequent(int[] nums, int k) {
        // 숫자, 횟수
        HashMap<Integer, Integer> cnt = new HashMap<>();

        for(int i : nums)
            cnt.put(i, cnt.getOrDefault(i, 0)+1);
        
        // 횟수 순으로 정렬
        PriorityQueue<Integer> pq = new PriorityQueue<>(new Comparator<Integer>(){
            @Override
            public int compare(Integer i1, Integer i2){
                if(cnt.get(i1)==cnt.get(i2))
                    return i1-i2;
                return cnt.get(i2)-cnt.get(i1);
            }
        });

        for(int key : cnt.keySet()){
            pq.add(key);
        }

        int[] answer = new int[k];
        for(int i=0; i<k; i++){
            answer[i]=pq.poll();
        }

        return answer;
    }
}
Comments