news 2026/4/16 10:32:48

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/4/16 10:21:24

Maven 依赖作用域实战避坑指南

在 Maven 项目开发中&#xff0c;依赖作用域的配置直接影响项目的编译、测试和打包结果&#xff0c;稍有不慎就会引发 ClassNotFoundException、依赖包冗余等问题。结合日常开发场景&#xff0c;本文整理了常见的作用域使用误区和解决方案&#xff0c;帮你精准避坑。一、 高频误…

作者头像 李华
网站建设 2026/4/16 10:18:47

豆包Ai指令85

链接&#xff1a;https://pan.quark.cn/s/2e58220cd806一份专为字节跳动豆包AI设计的实用指令与提示词合集&#xff0c;收录85条经过验证的常用模板。涵盖写作、编程、分析、营销等多个场景&#xff0c;助您快速掌握与AI高效协作的技巧&#xff0c;解锁更多深度功能与创意玩法。…

作者头像 李华
网站建设 2026/4/16 10:20:33

从嵌入式转向 FPGA,他用 6 个月拿下 15K Offer|真实学员回访

这是学员 L 同学 在入职当天给我们发来的第一句话&#xff1a;“不是嵌入式不好&#xff0c;是我发现自己更适合 FPGA。”他并不是应届生&#xff0c;而是一名有 2 年嵌入式开发经验 的工程师。 从 STM32、RTOS&#xff0c;到驱动调试、板级联调&#xff0c;他都做过&#xff0…

作者头像 李华
网站建设 2026/4/16 10:16:57

是德N9917B手持式网络频谱分析仪N9917A

是德N9917B手持式网络频谱分析仪N9917AN9917B是是德科技 (Keysight)推出的多功能集成式手持射频 / 微波分析仪&#xff0c;频率覆盖30kHz-18GHz&#xff0c;集电缆与天线测试 (CAT)、矢量网络分析 (VNA)、频谱分析 (SA)三大核心功能于一体&#xff0c;同时支持实时频谱分析 (RT…

作者头像 李华