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; } };

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1175040.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

大数据领域数据共享的未来发展趋势

大数据领域数据共享的未来发展趋势&#xff1a;从“数据孤岛”到“数字共生”的进化之旅关键词&#xff1a;数据共享、隐私计算、联邦学习、区块链、数据要素市场、数据治理、数字经济摘要&#xff1a;在数字经济时代&#xff0c;数据已成为“新型石油”&#xff0c;但数据孤岛…

GESP认证C++编程真题解析 | 202409 二级

​欢迎大家订阅我的专栏:算法题解:C++与Python实现! 本专栏旨在帮助大家从基础到进阶 ,逐步提升编程能力,助力信息学竞赛备战! 专栏特色 1.经典算法练习:根据信息学竞赛大纲,精心挑选经典算法题目,提供清晰的…

六.循环问题

1.角谷猜想#include<iostream> #include<string.h> #include<iomanip> using namespace std; int main() {int n;cin>>n;while(n>1){if(n%20) cout<<n/2<<endl;if(n%2!0) cout<<n*31<<endl;cout<<i<<endl; }…

洛谷 P2725:[USACO3.1] 邮票 Stamps ← BFS

​【题目来源】https://www.luogu.com.cn/problem/P2725https://www.acwing.com/problem/content/1382/【题目描述】给一组 n 枚邮票的面值集合和一个上限 k——表示信封上能够贴 k 张邮票。请求出最大的正整数 m,满足…

Apache Atlas vs DataHub:主流数据目录工具对比评测

Apache Atlas vs DataHub&#xff1a;主流数据目录工具对比评测关键词&#xff1a;数据目录、元数据管理、Apache Atlas、DataHub、对比评测、企业级数据治理、数据发现 摘要&#xff1a;本文深入对比分析Apache Atlas与DataHub两大主流数据目录工具&#xff0c;从技术架构、核…

基于Java+SpringBoot+Vue医院药品管理系统【附源码+文档+部署视频+讲解】Python,Django,php,Flask,node.js,SSM,JSP,微信小程序,大数据技术

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

汽车零配件检测实验室LIMS便捷的系统应用实践

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

拒绝“PPT 造芯”,边缘 AI 芯片 IP 厂商 Quadric 拿下 3000 万美元 C 轮

当半导体一级市场回归理性,资本不再为单纯的“算力堆叠”买单,而是开始寻找真正能“落地”的技术。1 月 15 日,硅谷通用神经网络处理器(GPNPU)IP 厂商 Quadric 正式宣布完成 3000 万美元(约合人民币 2.17 亿元)…

python实现信件详细信息爬取

以下是任务要求: (1) 采集北京市政百姓信件内容; (2) 编写 MapReduce 程序清洗信件内容数据; (3) 利用 HiveSql 语句离线分析信件内容数据; (4) 利用 Sqoop 导出 Hive 分析数据到 MySQL 库; (5) 开发 J…

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

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

[论文笔记] KNighter: Transforming Static Analysis with LLM-Synthesized Checkers

Introduction 传统静态分析依赖专家手工定义的分析规则,无法应对新的 bug 模式。LLM 在代码理解上有不俗的能力。但直接使用 LLM 去分析 Linux 内核又面临有限上下文和幻觉的问题。本文提出用 LLM 从以往的报告中合成…

计算机Java毕设实战-基于Javaspringboot的博客系统基于springboot的博客系统【完整源码+LW+部署说明+演示视频,全bao一条龙等】

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

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

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

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

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

集体好奇心如何提升团队适应能力

集体好奇心如何提升团队适应能力 关键词:集体好奇心、团队适应能力、知识共享、创新思维、团队凝聚力 摘要:本文聚焦于集体好奇心与团队适应能力之间的关系。首先介绍了研究的背景、目的、预期读者等基本信息。接着阐述了集体好奇心和团队适应能力的核心概念及二者的联系,通…

Java毕设选题推荐:基于vue的博客分享发布系统基于springboot的博客系统【附源码、mysql、文档、调试+代码讲解+全bao等】

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

【计算机毕业设计案例】基于python-CNN卷神经网络训练识别手势方向

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

详细介绍:Java 中 NIO 和IO 的区别

详细介绍:Java 中 NIO 和IO 的区别2026-01-17 22:48 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !imp…

LVGL 双缓冲机制深入技术讲解

LVGL 双缓冲机制深入技术讲解全面深入讲解 LVGL&#xff08;Light and Versatile Graphics Library&#xff09;的双缓冲、DMA 并行刷新、瓦片渲染与性能优化第一部分&#xff1a;核心概念与原理 1. 为什么需要缓冲&#xff1f;——从根本问题说起 在没有缓冲的情况下&#xff…

LeeCode_693. 交替位二进制数

693. 交替位二进制数 给定一个正整数,检查它的二进制表示是否总是 0、1 交替出现:换句话说,就是二进制表示中相邻两位的数字永不相同。 示例 1: 输入:n = 5 输出:true 解释:5 的二进制表示是:101法一:只要有前…