16
16
* Time O(nlogk) - logk pairings, each call to mergeTwoLists is n.
17
17
*/
18
18
const mergeKLists = lists => {
19
- if ( ! lists . length ) return null ;
20
- if ( lists . length === 1 ) return lists [ 0 ] ;
19
+ if ( ! lists . length ) return null ;
20
+ if ( lists . length === 1 ) return lists [ 0 ] ;
21
21
22
- const k = lists . length ;
23
- let pairings = 1 ;
22
+ const k = lists . length ;
23
+ let pairings = 1 ;
24
24
25
- while ( pairings < k ) {
26
- for ( let index = 0 ; index < k - pairings ; index += pairings * 2 ) {
27
- lists [ index ] = mergeTwoLists ( lists [ index ] , lists [ index + pairings ] ) ;
28
- }
29
- pairings *= 2 ;
25
+ while ( pairings < k ) {
26
+ for ( let index = 0 ; index < k - pairings ; index += pairings * 2 ) {
27
+ lists [ index ] = mergeTwoLists ( lists [ index ] , lists [ index + pairings ] ) ;
30
28
}
29
+ pairings *= 2 ;
30
+ }
31
31
32
- return lists [ 0 ] ;
32
+ return lists [ 0 ] ;
33
33
} ;
34
34
35
35
/**
@@ -39,23 +39,22 @@ const mergeKLists = lists => {
39
39
* @description Merge two sorted linked lists and return it as a new sorted list.
40
40
*/
41
41
const mergeTwoLists = ( l1 , l2 ) => {
42
- const head = new ListNode ( 0 ) ;
43
-
44
- let current = head ;
45
- while ( l1 && l2 ) {
46
- if ( l1 . val < l2 . val ) {
47
- current . next = l1 ;
48
- l1 = l1 . next ;
49
- } else {
50
- current . next = l2 ;
51
- l2 = l2 . next ;
52
- }
53
-
54
- current = current . next ;
42
+ const head = new ListNode ( 0 ) ;
43
+
44
+ let current = head ;
45
+ while ( l1 && l2 ) {
46
+ if ( l1 . val < l2 . val ) {
47
+ current . next = l1 ;
48
+ l1 = l1 . next ;
49
+ } else {
50
+ current . next = l2 ;
51
+ l2 = l2 . next ;
55
52
}
56
53
57
- current . next = ! l1 ? l2 : l1 ;
54
+ current = current . next ;
55
+ }
58
56
59
- return head . next ;
60
- } ;
57
+ current . next = ! l1 ? l2 : l1 ;
61
58
59
+ return head . next ;
60
+ } ;
0 commit comments