news 2026/9/3 7:58:38

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/9/3 1:12:53

【毕业设计】基于springboot的学车驾校线上理论学习刷题管理系统的设计与实现(源码+文档+远程调试,全bao定制等)

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

作者头像 李华
网站建设 2026/9/2 23:29:34

基于Java+SpringBoot+Vue的城市花园维修小区管理【附源码+文档+部署视频+讲解】Python,Django,php,Flask,node.js,SSM,JSP,微信小程序,大数据技术

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

作者头像 李华
网站建设 2026/9/2 15:55:02

基于Java+SpringBoot+Vue的美食交流宣传系统【附源码+文档+部署视频+讲解】Python,Django,php,Flask,node.js,SSM,JSP,微信小程序,大数据技术

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

作者头像 李华
网站建设 2026/9/2 6:19:07

Android调试命令宝典:从入门到精通的全场景实战指南

在Android开发、测试和逆向分析中&#xff0c;调试命令是开发者最有力的“瑞士军刀”。本文将带你深入探索Android调试命令的完整体系&#xff0c;涵盖从基础连接到高级分析的全场景实用技巧。 一、ADB核心命令体系 ADB&#xff08;Android Debug Bridge&#xff09;是连接开…

作者头像 李华
网站建设 2026/9/2 22:33:03

jadx-gui(java反编译工具)

链接&#xff1a;https://pan.quark.cn/s/fafb515cc32c jadx-gui是一款用过都说好的java 和安卓APK反编译工具,它功能强大,它可以处理大部分反编译的需求,满足相关人员日常反编译需求&#xff0c;反编译后的效果比jd-gui好。 一个简单轻巧的 DEX 到Java反编译器&#xff0c;可…

作者头像 李华