Skip to content

Commit 2a23453

Browse files
committed
203. 移除链表元素 (二刷)
1 parent 9305453 commit 2a23453

File tree

2 files changed

+73
-8
lines changed

2 files changed

+73
-8
lines changed

algorithms/remove-linked-list-elements.js

+24-8
Original file line numberDiff line numberDiff line change
@@ -12,18 +12,22 @@
1212
* @return {ListNode}
1313
*/
1414
var removeElements = function (head, val) {
15-
// 1. 递归
16-
let curr = head;
15+
// 1. 迭代-方式一 (更好理解) (dummy node)
1716

18-
if (curr) {
19-
curr.next = removeElements(curr.next, val);
20-
if (curr.val === val) {
21-
return curr.next;
17+
let dummyNode = new ListNode(0, head);
18+
let curr = dummyNode;
19+
20+
while (curr.next) {
21+
if (val === curr.next.val) {
22+
curr.next = curr.next.next;
23+
continue;
2224
}
25+
curr = curr.next;
2326
}
24-
return curr;
2527

26-
// 2. 迭代 (dummy node)
28+
return dummyNode.next;
29+
30+
// 2. 迭代-方式二 (dummy node)
2731

2832
// let curr = head;
2933
// let dummyNode = new ListNode(-1);
@@ -40,4 +44,16 @@ var removeElements = function (head, val) {
4044
// }
4145

4246
// return dummyNode.next;
47+
48+
// 3. 递归
49+
50+
// let curr = head;
51+
52+
// if (curr) {
53+
// curr.next = removeElements(curr.next, val);
54+
// if (curr.val === val) {
55+
// return curr.next;
56+
// }
57+
// }
58+
// return curr;
4359
};

vs-lt/203.移除链表元素.js

+49
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
/*
2+
* @lc app=leetcode.cn id=203 lang=javascript
3+
*
4+
* [203] 移除链表元素
5+
*/
6+
7+
// @lc code=start
8+
/**
9+
* Definition for singly-linked list.
10+
* function ListNode(val, next) {
11+
* this.val = (val===undefined ? 0 : val)
12+
* this.next = (next===undefined ? null : next)
13+
* }
14+
*/
15+
/**
16+
* @param {ListNode} head
17+
* @param {number} val
18+
* @return {ListNode}
19+
*/
20+
var removeElements = function(head, val) {
21+
// 递归
22+
23+
// let curr = head;
24+
25+
// if (curr) {
26+
// curr.next = removeElements(curr.next, val);
27+
// if (val === curr.val) {
28+
// return curr.next;
29+
// }
30+
// }
31+
// return curr;
32+
33+
// 迭代
34+
35+
let dummyNode = new ListNode(0, head);
36+
let curr = dummyNode;
37+
38+
while (curr.next) {
39+
if (val === curr.next.val) {
40+
curr.next = curr.next.next;
41+
continue;
42+
}
43+
curr = curr.next;
44+
}
45+
46+
return dummyNode.next;
47+
};
48+
// @lc code=end
49+

0 commit comments

Comments
 (0)