(Python, Java) 리트코드 - Top K Frequent Elements

[문제 링크]

Python 풀이

from collections import Counter
from typing import List


class Solution:
    def topKFrequent(self, nums: List[int], k: int) -> List[int]:
        counter = Counter(nums)
        answer = []
        for key, _ in counter.most_common(k):
            answer.append(key)
        return answer

Java 풀이

import java.util.Collections;
import java.util.HashMap;
import java.util.Map;

class Solution {
    public int[] topKFrequent(int[] nums, int k) {

        Map<Integer, Integer> counter = new HashMap<>();
        for (int num : nums) {
            counter.put(num, counter.getOrDefault(num, 0) + 1);
        }

        return counter.entrySet().stream().sorted(Map.Entry.comparingByValue(Collections.reverseOrder()))
                .map(Map.Entry::getKey)
                .limit(k)
                .mapToInt(Integer::intValue)
                .toArray();
    }

}

comparingByValue() 다음에 .reversed가 자동완성으로 나오는데 사용할 수 없고 인자로 reverseOrder를 줘야 한다.


© 2021. By Backtony