news 2026/3/23 23:22:14

day137—链表—删除链表中的结点(LeetCode-237)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
day137—链表—删除链表中的结点(LeetCode-237)

题目描述

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

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

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

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

  • 给定节点的值不应该存在于链表中。
  • 链表中的节点数应该减少 1。
  • node前面的所有值顺序相同。
  • node后面的所有值顺序相同。

自定义测试:

  • 对于输入,你应该提供整个链表head和要给出的节点nodenode不应该是链表的最后一个节点,而应该是链表中的一个实际节点。
  • 我们将构建链表,并将节点传递给你的函数。
  • 输出将是调用你函数后的整个链表。

示例 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

提示:

  • 链表中节点的数目范围是[2, 1000]
  • -1000 <= Node.val <= 1000
  • 链表中每个节点的值都是唯一
  • 需要删除的节点node链表中的节点,且不是末尾节点

解决方案:

这段代码的核心功能是删除单链表中指定的节点(注意:传入的参数是待删除的节点本身,而非链表头节点或待删除节点的前驱节点),采用 “值覆盖 + 跳过后继节点” 的技巧实现,时间复杂度O(1)、空间复杂度O(1),是该特殊场景下的最优解法。

核心逻辑

常规删除链表节点需要找到前驱节点,但本题仅给出待删除节点(且该节点非尾节点),因此通过 “偷梁换柱” 的方式绕开前驱节点:

  1. 值覆盖:将待删除节点node的值替换为其下一个节点node->next的值;
  2. 跳过节点:将nodenext指针指向node->next->next,直接跳过原node->next节点;
  3. 最终效果等价于删除了原node节点(原node->next节点变为无引用状态,可被垃圾回收)。

总结

  1. 核心思路:利用 “值覆盖” 替代常规的 “指针调整”,解决无前驱节点时删除指定节点的问题;
  2. 适用条件:仅适用于待删除节点不是链表尾节点的场景(题目通常会保证这一点);
  3. 效率优势:无需遍历链表,仅两步操作完成删除,时间复杂度O(1),是该场景下的最优解。

函数源码:

/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ class Solution { public: void deleteNode(ListNode* node) { node->val=node->next->val; node->next=node->next->next; } };
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/21 10:26:30

【课程设计/毕业设计】基于springboot的学车驾校线上学习课程安排管理系统的设计与实现【附源码、数据库、万字文档】

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/3/22 23:27:03

Java毕设选题推荐:基于Java+springboot的驾校课程线上学习管理系统的设计与实现【附源码、mysql、文档、调试+代码讲解+全bao等】

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/3/23 2:47:27

基于Java+SpringBoot+Vue的大学生房屋租赁系统【附源码+文档+部署视频+讲解】Python,Django,php,Flask,node.js,SSM,JSP,微信小程序,大数据技术

博主介绍 &#x1f468; 程序员一枚&#xff0c;全网粉丝 30W&#xff0c;累计助力 5000 学子完成优秀毕设&#xff0c;专注大学生项目实战开发、技术讲解与毕业论文撰写修改&#xff0c;全栈领域优质创作者&#xff01;博客之星、掘金 / 华为云 / 阿里云 / InfoQ 等多平台优质…

作者头像 李华
网站建设 2026/3/23 11:51:51

10 分钟使用 OrchardCore 快速构建 .NET 内容管理系统(CMS)

目录 前言 项目介绍 项目特点 支持数据库 项目源代码 创建 Orchard Core CMS 网站 CMS 网站后台管理页面 菜单栏编辑 内容管理 主题切换 角色权限管理 创建网站用户 图片管理 其他功能 项目源码地址 优秀项目和框架精选 前言 今天我们来使用 OrchardCore 来快…

作者头像 李华
网站建设 2026/3/23 20:23:48

Tuniac(无损音乐播放器)

链接&#xff1a;https://pan.quark.cn/s/a897e5b919d2Tuniac是免费的无损音乐播放器软件&#xff0c;这是itunes风格的音乐播放器&#xff0c;支持很多音乐格式&#xff0c;包括flac&#xff0c; mp3&#xff0c; aac/m4a/mp4/3gp&#xff0c; opus&#xff0c; ogg&#xff0…

作者头像 李华