Skip to content

Commit bec431b

Browse files
authored
feat: update js solution to lcof problem: No.25 (#708)
面试题25. 合并两个排序的链表
1 parent ced8022 commit bec431b

File tree

2 files changed

+43
-52
lines changed

2 files changed

+43
-52
lines changed

lcof/面试题25. 合并两个排序的链表/README.md

Lines changed: 40 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,8 @@ class Solution {
7979

8080
### **JavaScript**
8181

82+
- 递归
83+
8284
```js
8385
/**
8486
* Definition for singly-linked list.
@@ -93,39 +95,51 @@ class Solution {
9395
* @return {ListNode}
9496
*/
9597
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+
}
99101
if (l1.val < l2.val) {
100102
l1.next = mergeTwoLists(l1.next, l2);
101103
return l1;
102104
} else {
103105
l2.next = mergeTwoLists(l2.next, l1);
104106
return l2;
105107
}
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;
129143
};
130144
```
131145

lcof/面试题25. 合并两个排序的链表/Solution.js

Lines changed: 3 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -11,37 +11,14 @@
1111
* @return {ListNode}
1212
*/
1313
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+
}
1717
if (l1.val < l2.val) {
1818
l1.next = mergeTwoLists(l1.next, l2);
1919
return l1;
2020
} else {
2121
l2.next = mergeTwoLists(l2.next, l1);
2222
return l2;
2323
}
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
4724
};

0 commit comments

Comments
 (0)