LeetCode 237. 删除链表中的节点

题目描述

237. 删除链表中的节点

image-20230305201112141

image-20230305201108966

思路分析

解法一:覆盖后继节点(推荐)

核心思路

  • 题目保证不是尾节点,可直接把后继节点值复制到当前节点。
  • 再让当前节点跳过后继节点。
  • 实现 O(1) 删除。


复杂度分析

  • 时间复杂度:O(1),常数操作。
  • 空间复杂度:O(1),仅使用常数额外空间。
class Solution {
    public void deleteNode(ListNode node) {
        // 将后继节点的值覆盖到当前节点
        node.val = node.next.val;
        node.next = node.next.next;
    }
}
func deleteNode(node *ListNode) {
	// 将后继节点的值覆盖到当前节点
	node.Val = node.Next.Val
	node.Next = node.Next.Next
}

相似题目

题目 难度 考察点
19. 删除链表的倒数第 N 个结点 中等 双指针
83. 删除排序链表中的重复元素 简单 链表
203. 移除链表元素 简单 链表
237. 删除链表中的节点 简单 链表
876. 链表的中间结点 简单 双指针
本文作者:
本文链接: https://hgnulb.github.io/blog/2026/36392596
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处!