Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit a8b4485

Browse files
authored
Add files via upload
1 parent 7c3c84d commit a8b4485

File tree

1 file changed

+49
-0
lines changed

1 file changed

+49
-0
lines changed

‎Top_K_Elements/max_subsequence.py‎

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
import heapq
2+
3+
def max_subsequence(nums, k):
4+
5+
# Initialize min heap
6+
min_heap = []
7+
8+
# Iterate through list of numbers
9+
for i, num in enumerate(nums):
10+
11+
# Push to heap
12+
heapq.heappush(min_heap, (num, i))
13+
14+
# Maintain the size of heap to k
15+
if len(min_heap) > k:
16+
heapq.heappop(min_heap)
17+
18+
# Extract elements from heap and sort in orginal order
19+
result = sorted(min_heap, key = lambda x: x[1])
20+
return [x[0] for x in result]
21+
22+
23+
24+
# Time Complexity = O(nlogk)
25+
# Space Complexity = O(k)
26+
27+
28+
29+
############################################################################
30+
31+
32+
33+
def main():
34+
test_cases = [
35+
([3, 4, 3, 3], 2),
36+
([2, 1, 3, 3], 2),
37+
([-1, -2, 3, 4], 3),
38+
([1, 2, 3, 4, 5], 3),
39+
([9, -1, -3, 8, 7], 2)
40+
]
41+
42+
for i, (nums, k) in enumerate(test_cases, 1):
43+
print(f"{i}\tnums = {nums}, k = {k}")
44+
result = max_subsequence(nums, k)
45+
print(f"\n\tResult: {result}\n")
46+
print("-"*100)
47+
if __name__ == "__main__":
48+
main()
49+

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /