Skip to content

Commit cdc7106

Browse files
committed
docs: update lcof solutions
1 parent d407887 commit cdc7106

File tree

4 files changed

+34
-29
lines changed

4 files changed

+34
-29
lines changed

lcof/面试题18. 删除链表的节点/README.md

+14-14
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,11 @@
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**
@@ -38,21 +43,17 @@
3843
# def __init__(self, x):
3944
# self.val = x
4045
# self.next = None
41-
4246
class 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
*/
6869
class 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
}

lcof/面试题18. 删除链表的节点/Solution.java

+11-8
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,23 @@
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
*/
59
class 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
}

lcof/面试题18. 删除链表的节点/Solution.py

+4-7
Original file line numberDiff line numberDiff line change
@@ -3,17 +3,14 @@
33
# def __init__(self, x):
44
# self.val = x
55
# self.next = None
6-
76
class 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

lcof/面试题22. 链表中倒数第k个节点/README.md

+5
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,11 @@
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**

0 commit comments

Comments
 (0)