[LeetCode] Top K Frequent Elements (Python)

Evan Lee·2023년 8월 8일

코딩에 대한 이해력을 높이기 위한 작성된 글입니다.
여기의 내용은 @NeetCode 유튜버 동영상을 기반으로 작성되었으므로, 문제 발생 시 즉각적으로 삭제하도록 하겠습니다.

문제

풀이

nums = [2,3,1,1,2,1] 을 발생빈도에 따라 정리하게 되면 아래와 같은 테이블로 정리하여, Sorting을 통하여 Most Frequent 값을 도출 해낼 수 있습니다.

하지만, Time Complexity 차원에서 효율적이지 않을 것 입니다.

ValueCount
22
31
13

이에, Bucket Sort 통해 문제를 풀어보고자 합니다.

0123
(3)(2)(1)

class Solution:
    def topKFrequent(self, nums: List[int], k: int) -> List[int]:
        
        count = {}
        freq = [[] for i in range(len(nums) + 1)]

        for n in nums:
            count[n] = 1 + count.get(n, 0)
        for n, c in count.items():
            freq[c].append(n)

        res = []
        for i in range(len(freq) - 1, 0, -1):
            for n in freq[i]:
                res.append(n)
                if len(res) == k:
                    return res

아직 많이 부족하지만, 글 읽어주셔서 감사합니다.
궁금한 사항 있으시다면, 댓글 남겨주세요.

0개의 댓글