Skip to content

Commit dd6ca48

Browse files
committed
refactor: Improve time complexity using heap for topKFrequent
1 parent 65c2c59 commit dd6ca48

File tree

1 file changed

+27
-0
lines changed

1 file changed

+27
-0
lines changed

top-k-frequent-elements/KwonNayeon.py

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,16 +18,43 @@
1818
- O(n)
1919
"""
2020

21+
# Original Solution
2122
class Solution:
2223
def topKFrequent(self, nums: List[int], k: int) -> List[int]:
2324
frequency = {}
2425
result = []
26+
2527
for num in nums:
2628
if num in frequency:
2729
frequency[num] += 1
2830
else:
2931
frequency[num] = 1
32+
3033
sorted_frequency = sorted(frequency.items(), key=lambda x: x[1], reverse=True)
34+
3135
for i in range(k):
3236
result.append(sorted_frequency[i][0])
37+
38+
return result
39+
40+
# Improved Solution using Heap
41+
# Time Complexity: O(n log k)
42+
class Solution:
43+
def topKFrequent(self, nums: List[int], k: int) -> List[int]:
44+
frequency = {}
45+
result = []
46+
heap = []
47+
48+
for num in nums:
49+
if num in frequency:
50+
frequency[num] += 1
51+
else:
52+
frequency[num] = 1
53+
54+
for num, freq in frequency.items():
55+
heapq.heappush(heap, (-freq, num))
56+
57+
for i in range(k):
58+
result.append(heapq.heappop(heap)[1])
59+
3360
return result

0 commit comments

Comments
 (0)