File tree 2 files changed +73
-8
lines changed
2 files changed +73
-8
lines changed Original file line number Diff line number Diff line change 12
12
* @return {ListNode }
13
13
*/
14
14
var removeElements = function ( head , val ) {
15
- // 1. 递归
16
- let curr = head ;
15
+ // 1. 迭代-方式一 (更好理解) (dummy node)
17
16
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 ;
22
24
}
25
+ curr = curr . next ;
23
26
}
24
- return curr ;
25
27
26
- // 2. 迭代 (dummy node)
28
+ return dummyNode . next ;
29
+
30
+ // 2. 迭代-方式二 (dummy node)
27
31
28
32
// let curr = head;
29
33
// let dummyNode = new ListNode(-1);
@@ -40,4 +44,16 @@ var removeElements = function (head, val) {
40
44
// }
41
45
42
46
// 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;
43
59
} ;
Original file line number Diff line number Diff line change
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
+
You can’t perform that action at this time.
0 commit comments