Skip to content

Commit a597381

Browse files
committed
Add solution 237
1 parent 9dfb2a5 commit a597381

File tree

4 files changed

+73
-0
lines changed

4 files changed

+73
-0
lines changed

README.md

+1
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ Complete solutions to Leetcode problems, updated daily.
1717
| 021 | [Merge Two Sorted Lists](https://github.com/yanglbme/leetcode/tree/master/solution/021.Merge%20Two%20Sorted%20Lists) | `Linked List` |
1818
| 083 | [Remove Duplicates from Sorted List](https://github.com/yanglbme/leetcode/tree/master/solution/083.Remove%20Duplicates%20from%20Sorted%20List) | `Linked List` |
1919
| 203 | [Remove Linked List Elements](https://github.com/yanglbme/leetcode/tree/master/solution/203.Remove%20Linked%20List%20Elements) | `Linked List` |
20+
| 237 | [Delete Node in a Linked List](https://github.com/yanglbme/leetcode/tree/master/solution/237.Delete%20Node%20in%20a%20Linked%20List) | `Linked List` |
2021

2122

2223
### Medium
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
## 删除链表中的节点
2+
### 题目描述
3+
4+
请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点,你将只被给定要求被删除的节点。
5+
6+
现有一个链表 -- head = [4,5,1,9],它可以表示为:
7+
```
8+
4 -> 5 -> 1 -> 9
9+
```
10+
11+
示例 1:
12+
```
13+
输入: head = [4,5,1,9], node = 5
14+
输出: [4,1,9]
15+
解释: 给定你链表中值为 5 的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9.
16+
```
17+
18+
示例 2:
19+
```
20+
输入: head = [4,5,1,9], node = 1
21+
输出: [4,5,9]
22+
解释: 给定你链表中值为 1 的第三个节点,那么在调用了你的函数之后,该链表应变为 4 -> 5 -> 9.
23+
```
24+
25+
说明:
26+
27+
- 链表至少包含两个节点。
28+
- 链表中所有节点的值都是唯一的。
29+
- 给定的节点为非末尾节点并且一定是链表中的一个有效节点。
30+
- 不要从你的函数中返回任何结果。
31+
32+
### 解法
33+
刚开始看到这道题,有点懵,明明题目给出的输入是 head 跟 node,为什么 solution 中只有 node,后来才明白,只提供 node 依然可以解决此题。只要把下个结点的 值 & next 赋给当前 node,然后删除下个结点,就可以搞定。好题!
34+
35+
```java
36+
/**
37+
* Definition for singly-linked list.
38+
* public class ListNode {
39+
* int val;
40+
* ListNode next;
41+
* ListNode(int x) { val = x; }
42+
* }
43+
*/
44+
class Solution {
45+
public void deleteNode(ListNode node) {
46+
// 保存下一个结点
47+
ListNode tmp = node.next;
48+
49+
// 将下个结点的值赋给当前要删除的结点
50+
node.val = node.next.val;
51+
node.next = node.next.next;
52+
53+
// tmp 置为空,让 jvm 进行垃圾回收
54+
tmp = null;
55+
56+
}
57+
}
58+
```
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
class Solution {
2+
public void deleteNode(ListNode node) {
3+
// 保存下一个结点
4+
ListNode tmp = node.next;
5+
6+
// 将下个结点的值赋给当前要删除的结点
7+
node.val = node.next.val;
8+
node.next = node.next.next;
9+
10+
// tmp 置为空,让jvm进行垃圾回收
11+
tmp = null;
12+
13+
}
14+
}

solution/237.Delete Node in a Linked List/Solution.py

Whitespace-only changes.

0 commit comments

Comments
 (0)