Skip to content

Commit d617aa0

Browse files
authored
Create Merge k Sorted (Linked) Lists - Leetcode 23.py
1 parent 590e0fe commit d617aa0

File tree

1 file changed

+28
-0
lines changed

1 file changed

+28
-0
lines changed
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
import heapq
2+
# Definition for singly-linked list.
3+
# class ListNode:
4+
# def __init__(self, val=0, next=None):
5+
# self.val = val
6+
# self.next = next
7+
class Solution:
8+
def mergeKLists(self, lists: List[Optional[ListNode]]) -> Optional[ListNode]:
9+
heap = []
10+
for i, node in enumerate(lists):
11+
if node:
12+
heapq.heappush(heap, (node.val, i, node))
13+
14+
D = ListNode()
15+
cur = D
16+
17+
# n log k
18+
while heap:
19+
val, i, node = heapq.heappop(heap)
20+
cur.next = node
21+
cur = node
22+
node = node.next
23+
if node:
24+
heapq.heappush(heap, (node.val, i, node))
25+
26+
return D.next
27+
# Time: O(N log K)
28+
# Space: O(K)

0 commit comments

Comments
 (0)