File tree Expand file tree Collapse file tree 4 files changed +34
-29
lines changed Expand file tree Collapse file tree 4 files changed +34
-29
lines changed Original file line number Diff line number Diff line change 2929- 若使用 C 或 C++ 语言,你不需要 ` free ` 或 ` delete ` 被删除的节点
3030
3131## 解法
32+
33+ 定义一个虚拟头节点 ` dummy ` 指向 ` head ` ,再定义指针 ` pre ` 和 ` p ` 分别指向 ` dummy ` 和 ` head ` 。
34+
35+ 遍历链表,` pre ` 、` p ` 往后移动。当指针 ` p ` 指向的节点的值等于 ` val ` 时,将 ` pre.next ` 指向 ` p.next ` ,然后返回 ` dummy.next ` 。
36+
3237<!-- tabs:start -->
3338
3439### ** Python3**
3843# def __init__(self, x):
3944# self.val = x
4045# self.next = None
41-
4246class Solution :
4347 def deleteNode (self , head : ListNode, val : int ) -> ListNode:
44- pre = ListNode(0 )
45- pre.next = head
46- dummy = pre
47- p = head
48+ dummy = ListNode(0 )
49+ dummy.next = head
50+ pre, p = dummy, head
4851 while p:
4952 if p.val == val:
5053 pre.next = p.next
5154 break
52- else :
53- pre, p = p, p.next
55+ pre, p = p, p.next
5456 return dummy.next
55-
5657```
5758
5859### ** Java**
@@ -67,17 +68,16 @@ class Solution:
6768 */
6869class Solution {
6970 public ListNode deleteNode (ListNode head , int val ) {
70- ListNode pre = new ListNode (0 );
71- pre . next = head;
72- ListNode dummy = pre , p = head;
71+ ListNode dummy = new ListNode (0 );
72+ dummy . next = head;
73+ ListNode pre = dummy , p = head;
7374 while (p != null ) {
7475 if (p. val == val) {
7576 pre. next = p. next;
7677 break ;
77- } else {
78- pre = p;
79- p = p. next;
8078 }
79+ pre = p;
80+ p = p. next;
8181 }
8282 return dummy. next;
8383 }
Original file line number Diff line number Diff line change 11/**
2- * Definition for singly-linked list. public class ListNode { int val; ListNode
3- * next; ListNode(int x) { val = x; } }
2+ * Definition for singly-linked list.
3+ * public class ListNode {
4+ * int val;
5+ * ListNode next;
6+ * ListNode(int x) { val = x; }
7+ * }
48 */
59class Solution {
610 public ListNode deleteNode (ListNode head , int val ) {
7- ListNode pre = new ListNode (0 );
8- pre .next = head ;
9- ListNode dummy = pre , p = head ;
11+ ListNode dummy = new ListNode (0 );
12+ dummy .next = head ;
13+ ListNode pre = dummy , p = head ;
1014 while (p != null ) {
1115 if (p .val == val ) {
1216 pre .next = p .next ;
1317 break ;
14- } else {
15- pre = p ;
16- p = p .next ;
1718 }
19+ pre = p ;
20+ p = p .next ;
1821 }
1922 return dummy .next ;
2023 }
Original file line number Diff line number Diff line change 33# def __init__(self, x):
44# self.val = x
55# self.next = None
6-
76class Solution :
87 def deleteNode (self , head : ListNode , val : int ) -> ListNode :
9- pre = ListNode (0 )
10- pre .next = head
11- dummy = pre
12- p = head
8+ dummy = ListNode (0 )
9+ dummy .next = head
10+ pre , p = dummy , head
1311 while p :
1412 if p .val == val :
1513 pre .next = p .next
1614 break
17- else :
18- pre , p = p , p .next
15+ pre , p = p , p .next
1916 return dummy .next
Original file line number Diff line number Diff line change 1111返回链表 4->5.
1212
1313## 解法
14+
15+ 定义 ` p ` 、` q ` 指针指向 ` head ` 。
16+
17+ ` p ` 先向前走 ` k ` 步,接着 ` p ` 、` q ` 同时向前走,当 ` p ` 指向 ` null ` 时,` q ` 指向的节点即为链表的倒数第 ` k ` 个节点。
18+
1419<!-- tabs:start -->
1520
1621### ** Python3**
You can’t perform that action at this time.
0 commit comments