删除链表的节点
https://leetcode-cn.com/problems/delete-node-in-a-linked-list
最优解
把下一个节点的值移动到当前删除节点,然后更改当前节点的Next
node.Val = node.Next.Valnode.Next = node.Next.Next
other
p.next = p.next.next即可达到删除的目的
/*** Definition for singly-linked list.* type ListNode struct {* Val int* Next *ListNode* }*/
func deleteNode(head *ListNode, val int) *ListNode {if head.Val == val{return head.Next}pre:=head for head.Next.Val != val{head = head.Next}head.Next = head.Next.Nextreturn pre
}
题目
- 删除链表中的节点
请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点,你将只被给定要求被删除的节点。
现有一个链表 – head = [4,5,1,9],它可以表示为:
示例 1:
输入: head = [4,5,1,9], node = 5
输出: [4,1,9]
解释: 给定你链表中值为 5 的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9.
示例 2:
输入: head = [4,5,1,9], node = 1
输出: [4,5,9]
解释: 给定你链表中值为 1 的第三个节点,那么在调用了你的函数之后,该链表应变为 4 -> 5 -> 9.
Code
依然注意,是达到删除的目的
/*** Definition for singly-linked list.* type ListNode struct {* Val int* Next *ListNode* }*/
func deleteNode(node *ListNode) {for node.Next.Next != nil {node.Val = node.Next.Valnode = node.Next}node.Val = node.Next.Valnode.Next = nil
}