Skip to content

Commit db6de7a

Browse files
authored
Update 23-merge-k-sorted-lists.js
1 parent 31c6b69 commit db6de7a

File tree

1 file changed

+44
-0
lines changed

1 file changed

+44
-0
lines changed

23-merge-k-sorted-lists.js

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,50 @@ function merge(lists, l, r) {
3434
return dummy.next
3535
}
3636

37+
// another
38+
39+
/**
40+
* Definition for singly-linked list.
41+
* function ListNode(val, next) {
42+
* this.val = (val===undefined ? 0 : val)
43+
* this.next = (next===undefined ? null : next)
44+
* }
45+
*/
46+
/**
47+
* @param {ListNode[]} lists
48+
* @return {ListNode}
49+
*/
50+
const mergeKLists = function(lists) {
51+
if(lists == null || lists.length === 0) return null
52+
if(lists.length === 1) return lists[0]
53+
if(lists.length === 2) return mergeTwo(lists[0], lists[1])
54+
const left = mergeKLists(lists.slice(0, ~~(lists.length / 2)))
55+
const right = mergeKLists(lists.slice(~~(lists.length / 2)))
56+
57+
return mergeTwo(left, right)
58+
};
59+
60+
function mergeTwo(l1, l2) {
61+
const dummy = new ListNode()
62+
let cur = dummy
63+
while(l1 && l2) {
64+
if(l1.val < l2.val) {
65+
cur.next = l1
66+
l1 = l1.next
67+
} else {
68+
cur.next = l2
69+
l2 = l2.next
70+
}
71+
cur = cur.next
72+
}
73+
if(l1) cur.next = l1
74+
if(l2) cur.next = l2
75+
76+
77+
return dummy.next
78+
}
79+
80+
3781
// another
3882

3983
/**

0 commit comments

Comments
 (0)