237 删除链表中的点-中等

题目:

有一个单链表 head,我们想删除链表中的一个节点 node。

已知给你一个需要删除的节点 node,你无法访问第一个节点 head。

链表的所有值都是唯一的,并且保证给定的节点 node 不是链表中的最后一个节点。

注意,删除节点并不是指从内存中删除它。这里的意思是:

  • 给定节点的值不应该存在于链表中。

  • 链表节点的数量应该减少1。

  • node前面的所有值顺序相同。

  • node后面的所有值顺序相同。

分析:

采用 后者赋值 的方法,让后面的值依次覆盖 node 开始的值就可以;然后把最后一个节点删除。

// date 2023/10/13
/**
 * Definition for singly-linked list.
 * type ListNode struct {
 *     Val int
 *     Next *ListNode
 * }
 */
func deleteNode(node *ListNode) {
    if node == nil {
        return
    }
    pre := node
    for node.Next != nil {
        pre = node
        node.Val = node.Next.Val
        node = node.Next
    }
    pre.Next = nil    
}

最后更新于