Skip to content

Commit 00f2cd3

Browse files
committed
merge k sorted lists solution
1 parent 869b211 commit 00f2cd3

File tree

1 file changed

+37
-0
lines changed

1 file changed

+37
-0
lines changed

merge-k-sorted-lists/hyer0705.ts

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
/**
2+
* Definition for singly-linked list.
3+
* class ListNode {
4+
* val: number
5+
* next: ListNode | null
6+
* constructor(val?: number, next?: ListNode | null) {
7+
* this.val = (val===undefined ? 0 : val)
8+
* this.next = (next===undefined ? null : next)
9+
* }
10+
* }
11+
*/
12+
13+
function mergeKLists(lists: Array<ListNode | null>): ListNode | null {
14+
if (!lists || lists.length === 0) return null;
15+
16+
const minHeap = new PriorityQueue((a: ListNode, b: ListNode) => a.val - b.val);
17+
18+
for (const node of lists) {
19+
if (node) minHeap.enqueue(node);
20+
}
21+
22+
const dummyHead = new ListNode();
23+
let current = dummyHead;
24+
25+
while (!minHeap.isEmpty()) {
26+
const minimumElement = minHeap.dequeue();
27+
28+
current.next = minimumElement;
29+
current = current.next;
30+
31+
if (minimumElement.next) {
32+
minHeap.enqueue(minimumElement.next);
33+
}
34+
}
35+
36+
return dummyHead.next;
37+
}

0 commit comments

Comments
 (0)