File tree Expand file tree Collapse file tree 2 files changed +43
-52
lines changed Expand file tree Collapse file tree 2 files changed +43
-52
lines changed Original file line number Diff line number Diff line change @@ -79,6 +79,8 @@ class Solution {
79
79
80
80
### ** JavaScript**
81
81
82
+ - 递归
83
+
82
84
``` js
83
85
/**
84
86
* Definition for singly-linked list.
@@ -93,39 +95,51 @@ class Solution {
93
95
* @return {ListNode}
94
96
*/
95
97
var mergeTwoLists = function (l1 , l2 ) {
96
- // 法一 - 递归
97
- if ( ! l1) return l2;
98
- if ( ! l2) return l1;
98
+ if ( ! (l1 && l2)) {
99
+ return l1 || l2;
100
+ }
99
101
if (l1 .val < l2 .val ) {
100
102
l1 .next = mergeTwoLists (l1 .next , l2);
101
103
return l1;
102
104
} else {
103
105
l2 .next = mergeTwoLists (l2 .next , l1);
104
106
return l2;
105
107
}
106
- // 法二 - 遍历
107
- // if(!l1 || !l2) return l1 ? l1 : l2
108
- // let a = l1
109
- // let b = l2
110
- // let res = l1
111
- // if(a.val > b.val) {
112
- // let c = a
113
- // a = b
114
- // b = c
115
- // res = l2
116
- // }
117
- // while(a && b) {
118
- // while(a.next && a.next.val < b.val) {
119
- // a = a.next
120
- // }
121
- // let tmp = a.next
122
- // let rec = b.next
123
- // a.next = b
124
- // a.next.next = tmp
125
- // a = a.next
126
- // b = rec
127
- // }
128
- // return res
108
+ };
109
+ ```
110
+
111
+ - 遍历
112
+
113
+ ``` js
114
+ /**
115
+ * Definition for singly-linked list.
116
+ * function ListNode(val) {
117
+ * this.val = val;
118
+ * this.next = null;
119
+ * }
120
+ */
121
+ /**
122
+ * @param {ListNode} l1
123
+ * @param {ListNode} l2
124
+ * @return {ListNode}
125
+ */
126
+ var mergeTwoLists = function (l1 , l2 ) {
127
+ const res = new ListNode ();
128
+ let cur = res;
129
+ while (l1 && l2) {
130
+ let node;
131
+ if (l1 .val < l2 .val ) {
132
+ node = l1;
133
+ l1 = l1 .next ;
134
+ } else {
135
+ node = l2;
136
+ l2 = l2 .next ;
137
+ }
138
+ cur .next = node;
139
+ cur = node;
140
+ }
141
+ cur .next = l1 || l2;
142
+ return res .next ;
129
143
};
130
144
```
131
145
Original file line number Diff line number Diff line change 11
11
* @return {ListNode }
12
12
*/
13
13
var mergeTwoLists = function ( l1 , l2 ) {
14
- // 法一 - 递归
15
- if ( ! l1 ) return l2 ;
16
- if ( ! l2 ) return l1 ;
14
+ if ( ! ( l1 && l2 ) ) {
15
+ return l1 || l2 ;
16
+ }
17
17
if ( l1 . val < l2 . val ) {
18
18
l1 . next = mergeTwoLists ( l1 . next , l2 ) ;
19
19
return l1 ;
20
20
} else {
21
21
l2 . next = mergeTwoLists ( l2 . next , l1 ) ;
22
22
return l2 ;
23
23
}
24
- // 法二 - 遍历
25
- // if(!l1 || !l2) return l1 ? l1 : l2
26
- // let a = l1
27
- // let b = l2
28
- // let res = l1
29
- // if(a.val > b.val) {
30
- // let c = a
31
- // a = b
32
- // b = c
33
- // res = l2
34
- // }
35
- // while(a && b) {
36
- // while(a.next && a.next.val < b.val) {
37
- // a = a.next
38
- // }
39
- // let tmp = a.next
40
- // let rec = b.next
41
- // a.next = b
42
- // a.next.next = tmp
43
- // a = a.next
44
- // b = rec
45
- // }
46
- // return res
47
24
} ;
You can’t perform that action at this time.
0 commit comments