Leetcode 删除链表倒数第 N 个节点
算法思想:
使用了双指针法。下面是详细的算法思想:
1. 引入虚拟头节点(dummy node)
- 为了处理链表的一些边界情况(比如删除头节点),我们在链表的头部引入了一个虚拟节点
dummy,并让它指向原来的头节点head。这样,无论我们要删除哪个节点,处理过程都变得更加统一和简单。
2. 定义两个指针:快指针(fast)和慢指针(slow)
- 我们使用两个指针,
fast和slow,最初都指向虚拟头节点dummy。 - 快指针
fast会比慢指针slow超前移动n+1步。这样,当fast指向链表末尾(null)时,slow刚好指向要删除节点的前一个节点。
3. 移动快指针
- 首先,快指针
fast先向前移动n+1步,这样可以确保快指针和慢指针之间相隔n个节点。
4. 同时移动快慢指针
- 接下来,快慢指针一起向前移动,直到快指针到达链表的末尾。这时,慢指针
slow就刚好处于要删除节点的前一个位置。
5. 删除节点
- 现在,慢指针
slow的下一个节点就是我们需要删除的节点。通过slow.next = slow.next.next,我们跳过了这个节点,达到了删除的目的。
6. 返回新的头节点
- 最后,返回
dummy.next。注意,链表的头节点可能发生了变化(如果原来的头节点被删除),因此我们返回虚拟节点dummy的下一个节点作为新的链表头节点。
代码核心思路总结:
- 通过快慢指针法,仅需遍历链表一次(一次循环)就可以找到倒数第N个节点,并将其删除,时间复杂度为 O(L),其中 L 是链表的长度。空间复杂度为 O(1),因为只用了常数级别的额外空间。
示例分析:
假设输入链表为 [1, 2, 3, 4, 5],n = 2,即删除倒数第二个节点。
- 初始化:
fast和slow都指向虚拟节点dummy。 - 快指针前移:
fast先向前移动n+1 = 3步,指向节点3。 - 同步移动:同时移动
fast和slow,直到fast指向null,此时slow指向节点3的前一个节点,即节点2。 - 删除节点:通过
slow.next = slow.next.next删除节点4,最终链表变为[1, 2, 3, 5]。
这样就成功地删除了倒数第2个节点。

java 实现代码:
/*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode() {}* ListNode(int val) { this.val = val; }* ListNode(int val, ListNode next) { this.val = val; this.next = next; }* }*/
class Solution {public ListNode removeNthFromEnd(ListNode head, int n) {ListNode dummyNode = new ListNode(0);dummyNode.next = head;ListNode slow = dummyNode; //dummyNode,slow,fast都是引用类型ListNode fast = dummyNode;for(int i = 0; i <= n; i++) { //快指针先移动 n+1 步fast = fast.next;}while(fast != null) { //然后快慢指针一起移动slow = slow.next;fast = fast.next;}slow.next = slow.next.next;return dummyNode.next;}
}
相关文章:
Leetcode 删除链表倒数第 N 个节点
算法思想: 使用了双指针法。下面是详细的算法思想: 1. 引入虚拟头节点(dummy node) 为了处理链表的一些边界情况(比如删除头节点),我们在链表的头部引入了一个虚拟节点 dummy,并让…...
[移植] tgi 编译
这里写自定义目录标题 报错 报错 Collecting numpy1.26.4 (from -r requirements_cuda.txt (line 21))Downloading numpy-1.26.4.tar.gz (15.8 MB)━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 15.8/15.8 MB 15.0 MB/s eta 0:00:00Inst…...
vue-element-admin后台集成方案
文章目录 vue-element-admin后台集成方案介绍使用安装目录介绍 vue-element-admin后台集成方案 介绍 官方网站 https://panjiachen.github.io/vue-element-admin-site/zh/guide/#%E5%8A%9F%E8%83%BD使用 安装 这里有三个模板,我们一般选择基础模板进行开发就好…...
40条经典ChatGPT论文指令,圈定选题和进行论文构思
目录 1、用ChatGPT圈定选题范围2、用ChatGPT生成研究方法和思路3、用ChatGPT扩展论文观点和论证4、用ChatGPT辅助论文结构设计5、如何直接使用ChatGPT4o、o1、OpenAI Canvas6、OpenAI Canvas增强了啥?7、编程功能增强 👇 ChatGPT o1网页入口在文末&#…...
在不支持WSL2的Windows环境下安装Redis并添加环境变量的方法
如果系统版本支持 WSL 2 可跳过本教程。使用官网提供的教程即可 官网教程 查看是否支持 WSL 2 如果不支持或者觉得麻烦可以按照下面的方式安装 下载 点击打开下载地址 下载 zip 文件即可 安装 将下载的 zip 文件解压到自己想要解压的地方即可。(注意&#x…...
《Electron 基础知识》代码打开开发者工具DevTools
初始化 const mainWindow new BrowserWindow({width: 1400,height: 800 );打开 接口 openDevTools mainWindow.webContents.openDevTools();关闭 接口 closeDevTools mainWindow.webContents.closeDevTools();...
小米R3G刷机OP
小米R3G刷机OP 22年购买了一个小米R3G路由器,刷OP系统后可以中继校园网,从而让智能开关、小爱同学可以联网。 当年的价格还是55元,现在只需要30元了,价格越来越便宜,并且OP版本越来越完善了。 之前刷机过breed系统&…...
移动机器人规划控制合集
系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 TODO:写完再整理 文章目录 系列文章目录前言 前言 认知有限,望大家多多包涵,有什么问题也希望能够与大家多交流,共同成长!…...
Type-C接口桌面显示器的优势
随着科技的飞速发展,电子设备的连接性、便捷性和高效性成为了消费者关注的重点。在这个背景下,Type-C接口桌面显示器以其卓越的性能和广泛的兼容性,正逐步成为市场上的主流选择。本文将深入探讨Type-C接口桌面显示器的优势、应用场景、市场现…...
机器学习中的熵(Entropy)是什么?
在机器学习和信息理论中,熵(Entropy)是衡量不确定性和信息量的一个重要概念。熵最初由信息论的奠基人克劳德香农(Claude Shannon)在1948年提出,用来衡量信息源的信息不确定性。在机器学习中,熵被…...
JAVA基础:Lock不同的锁形式
1.1 可重入锁 synchronized就是一个可重入锁 使用lock时,常用的ReentryLock就是可重入锁 当一个线程在获得a对象锁之后,可以继续重复获得对象锁 代码形式就是 线程调用同步代码段,在没有执行完毕前,又调用了该对象的另一个同步…...
【LeetCode每日一题】——679.24 点游戏
文章目录 一【题目类别】二【题目难度】三【题目编号】四【题目描述】五【题目示例】六【题目提示】七【解题思路】八【时间频度】九【代码实现】十【提交结果】 一【题目类别】 回溯 二【题目难度】 困难 三【题目编号】 679.24 点游戏 四【题目描述】 给定一个长度为4…...
【Conda】Conda命令详解:高效更新与环境管理指南
目录 1. Conda 更新命令1.1 更新 Conda 核心1.2 更新所有包 2. 严格频道优先级3. 强制安装特定版本4. 创建与管理环境4.1 创建新环境4.2 激活和停用环境4.3 导出和导入环境4.4 删除环境 5. 清理缓存总结 Conda 是一个强大的包管理和环境管理工具,广泛应用于数据科学…...
机器学习:回归模型和分类模型的评估方法介绍
回归模型和分类模型评估方法详解 一、回归模型评估方法 (一)均方误差(MSE) 原理 均方误差是衡量回归模型预测值与真实值之间平均平方差的指标。它通过计算预测值与真实值之差的平方的平均值来评估模型的性能。其数学公式为&…...
担心学术窃取?阿里云加密的AI论文工具帮你锁紧数据!
学术窃取是任何研究人员都需要警惕的问题。随着技术的发展,虽然研究工作变得更加高效,但同时也暴露了更多的安全漏洞,尤其是在数据传输和存储过程中。为了解决这一问题,梅子AI论文工具采用了阿里云加密技术,提供了一个…...
leetcode经典算法题总结
针对leetcode算法题常见的五大经典复杂算法进行如下总结: (1)分治法 把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题……直到最后子问题可以简单的直接求解,原问题的解即子问题的解…...
运维工具之ansible
Ansible 1.什么是ansible? ansible是基于ssh架构的自动化运维工具,由python语言实现,通过ansible可以远程批量部署等。 2.部署前提 控制端需要安装ansible,被控制端要开启ssh服务,并允许远程登录,被管理主机需要安装py…...
基于 CSS Grid 的简易拖拉拽 Vue3 组件,从代码到NPM发布(1)- 拖拉拽交互
基于特定的应用场景,需要在页面中以网格的方式,实现目标组件在网格中可以进行拖拉拽、修改大小等交互。本章开始分享如何一步步从代码设计,最后到如何在 NPM 上发布。 请大家动动小手,给我一个免费的 Star 吧~ 大家如果发现了 Bug…...
【华为HCIP实战课程六】OSPF邻居关系排错网络子网掩码问题,网络工程师
一、链路上网络和掩码引发的OSPF邻居问题 R3和R4已经建立正常的ospf邻居关系 更改IP地址前R3接口IP地址 interface Serial2/0/0 link-protocol ppp ip address 10.1.34.3 255.255.255.240 [R3-Serial2/0/0]ip address 10.1.88.2 255.255.255.240 更改为10.1.88.2 R3和R4虽…...
基础教程 | 用VuePress搭建一个简单的个人博客(附源码)
先附上自己个人博客页面:https://illusionno.github.io/ 源码也在这里:https://github.com/illusionno/my-blog (如果觉得有帮助,可以点颗star✨) 使用的主题是vuepress-theme-reco2.x,并在上面进行了一些调…...
Sinkhorn算法实战:用Python手把手教你解决最优传输问题(附完整代码)
Sinkhorn算法实战:用Python手把手教你解决最优传输问题(附完整代码) 最优传输理论在机器学习领域正掀起一场静默的革命。想象一下这样的场景:你需要将一组资源从A地运往B地,同时希望运输成本最低;或者你需要…...
软件测试的V模型竟然是有争议的?——软件测评师题目拆解
不知道有多少同学在这个简单的题目栽过跟头,国内、国外对于V模型的定义是有出入的(习题在文末十二五规划教材《软件测试(第2版)佟伟光 主编》 一书中给出的V模型QT官方对应V模型的定义是这样的等级考试用书《软件测评师教程》第二…...
AIGlasses_for_navigation视频分割教程:上传→处理→下载→验证全流程详解
AIGlasses_for_navigation视频分割教程:上传→处理→下载→验证全流程详解 你是不是遇到过这样的场景:手里有一段视频,想快速找出里面的特定物体,比如盲道、斑马线,或者红绿灯?手动一帧一帧看,…...
Visio网络拓扑图绘制实战:从基础操作到高级定制
1. Visio网络拓扑图绘制入门指南 第一次接触Visio画网络拓扑图时,我也被那些复杂的图标和连接线搞得头晕眼花。但用顺手后发现,这玩意儿比PS简单多了,就像用Word画图一样自然。先说说最基础的准备工作:安装Visio时记得勾选"网…...
深度解析Cursor试用重置工具:解决“You‘ve reached your trial request limit“的完整方案
深度解析Cursor试用重置工具:解决"Youve reached your trial request limit"的完整方案 【免费下载链接】go-cursor-help 解决Cursor在免费订阅期间出现以下提示的问题: Youve reached your trial request limit. / Too many free trial accounts used on…...
Vortex模组管理器:从架构到实战的全方位技术指南
Vortex模组管理器:从架构到实战的全方位技术指南 【免费下载链接】Vortex Vortex: Nexus-Mods开发的游戏模组管理器,用于简化模组的安装和管理过程。 项目地址: https://gitcode.com/gh_mirrors/vor/Vortex 一、Vortex核心架构解析 模组管理的&q…...
手把手教你排查Windows系统错误1114:从DLL加载原理到MySQL驱动修复
深入解析Windows系统错误1114:从DLL加载机制到MySQL驱动故障修复实战 当你在配置MySQL ODBC数据源时突然遭遇"系统错误1114:动态链接库(DLL)初始化例程失败"的红色警告框,那种挫败感我深有体会。这个看似简单的错误背后࿰…...
从海报生成实战出发:深度解析Canvas文本绘制的那些“坑”与高效解决方案
从海报生成实战出发:深度解析Canvas文本绘制的那些“坑”与高效解决方案 在数字化营销盛行的今天,一张精美的海报往往能成为内容传播的"门面担当"。无论是文章分享、活动推广还是品牌展示,视觉化呈现的效果直接影响用户点击意愿。…...
别再被‘绝对安全’忽悠了:聊聊量子密钥分发里那个叫‘诱骗态’的‘安全补丁’
量子密钥分发中的"安全补丁":诱骗态如何守护通信防线 量子通信常被冠以"绝对安全"的美誉,但鲜为人知的是,这项前沿技术同样需要不断打补丁来应对现实威胁。就像软件系统需要安全更新一样,量子密钥分发&#…...
SLAM Toolbox终极指南:5分钟掌握机器人定位与建图核心技术
SLAM Toolbox终极指南:5分钟掌握机器人定位与建图核心技术 【免费下载链接】slam_toolbox Slam Toolbox for lifelong mapping and localization in potentially massive maps with ROS 项目地址: https://gitcode.com/gh_mirrors/sl/slam_toolbox SLAM Tool…...
