Files
2022-09-10 16:41:11 -07:00

94 lines
2.2 KiB
Markdown
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# [237. Delete Node in a Linked List](https://leetcode.com/problems/delete-node-in-a-linked-list/)
## 题目
Write a function to **delete a node** in a singly-linked list. You will **not** be given access to the `head` of the list, instead you will be given access to **the node to be deleted** directly.
It is **guaranteed** that the node to be deleted is **not a tail node** in the list.
**Example 1:**
![https://assets.leetcode.com/uploads/2020/09/01/node1.jpg](https://assets.leetcode.com/uploads/2020/09/01/node1.jpg)
```
Input: head = [4,5,1,9], node = 5
Output: [4,1,9]
Explanation:You are given the second node with value 5, the linked list should become 4 -> 1 -> 9 after calling your function.
```
**Example 2:**
![https://assets.leetcode.com/uploads/2020/09/01/node2.jpg](https://assets.leetcode.com/uploads/2020/09/01/node2.jpg)
```
Input: head = [4,5,1,9], node = 1
Output: [4,5,9]
Explanation:You are given the third node with value 1, the linked list should become 4 -> 5 -> 9 after calling your function.
```
**Example 3:**
```
Input: head = [1,2,3,4], node = 3
Output: [1,2,4]
```
**Example 4:**
```
Input: head = [0,1], node = 0
Output: [1]
```
**Example 5:**
```
Input: head = [-3,5,-99], node = -3
Output: [5,-99]
```
**Constraints:**
- The number of the nodes in the given list is in the range `[2, 1000]`.
- `1000 <= Node.val <= 1000`
- The value of each node in the list is **unique**.
- The `node` to be deleted is **in the list** and is **not a tail** node
## 题目大意
删除给点结点。没有给链表的头结点。
## 解题思路
其实就是把后面的结点都覆盖上来即可。或者直接当前结点的值等于下一个结点Next 指针指向下下个结点,这样做也可以,只不过中间有一个结点不被释放,内存消耗多一些。
## 代码
```go
package leetcode
import (
"github.com/halfrost/LeetCode-Go/structures"
)
// ListNode define
type ListNode = structures.ListNode
/**
* Definition for singly-linked list.
* type ListNode struct {
* Val int
* Next *ListNode
* }
*/
func deleteNode(node *ListNode) {
node.Val = node.Next.Val
node.Next = node.Next.Next
}
```