当前位置: 首页 > news >正文

2025年- H29-Lc137- 19.删除链表的倒数第N个节点(快慢指针)---java版

1.题目描述

在这里插入图片描述

2.思路

快慢指针都在虚拟头节点,然后让快指针先走n+1步,接下来,快慢指针以前移动,直到快指针指向null,慢指针指向被删节点的前一个节点。
在这里插入图片描述

3.代码实现

方法一:不带测试用例

/*** 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) {//1.创建一个虚拟头节点,虚拟头节点的指针指向第一个节点ListNode dummyhead = new ListNode(0);dummyhead.next=head;//2.快慢指针都从虚拟头节点出发ListNode fast = dummyhead;ListNode slow = dummyhead;//3.让快指针先走n+1步for (int i = 0; i <= n; i++) {fast = fast.next;}//4.快慢指针同时移动,直到快指针指向空的时候停止while(fast!=null){fast=fast.next;slow=slow.next;}//此时把倒数前n+1节点的指针,指向最后一个节点slow.next=slow.next.next;return dummyhead.next;}
}

方法2:带测试用例

class ListNode {int val;ListNode next;ListNode() {}ListNode(int val) { this.val = val; }ListNode(int val, ListNode next) { this.val = val; this.next = next; }}
public class H19 {public ListNode removeNthFromEnd(ListNode head, int n) {//1.创建一个虚拟头节点,虚拟头节点的指针指向第一个节点ListNode dummyhead = new ListNode(0);dummyhead.next=head;//2.快慢指针都从虚拟头节点出发ListNode fast = dummyhead;ListNode slow = dummyhead;//3.让快指针先走n+1步for (int i = 0; i <= n; i++) {fast = fast.next;}//4.快慢指针同时移动,直到快指针指向空的时候停止while(fast!=null){fast=fast.next;slow=slow.next;}//此时把倒数前n+1节点的指针,指向最后一个节点slow.next=slow.next.next;return dummyhead.next;}public static void main(String[] args){H19 test=new H19();ListNode node5=new ListNode(5,null);ListNode node4=new ListNode(4,node5);ListNode node3=new ListNode(3,node4);ListNode node2=new ListNode(2,node3);ListNode head=new ListNode(1,node2);ListNode result=test.removeNthFromEnd(head,2);System.out.print("删除链表的倒数第N个节点:");while(result!=null)//当前的result不为空{System.out.print(result.val);//取值if(result.next!=null)//if是有限次循环,如果用while则会陷入无限循环{System.out.print("->");}result=result.next;}}}
http://www.xdnf.cn/news/517537.html

相关文章:

  • WebSocket解决方案的一些细节阐述
  • 国内人工智能行业研究报告 目录
  • 三相逆变器下垂均流控制策略simulink仿真
  • 通过觅思文档项目实现Obsidian文章浏览器在线访问
  • 基于OpenCV的实时文档扫描与矫正技术
  • Embedding 模型详解:架构、训练与 LLM 的区别
  • Opik: 评估、测试和监控 LLM 应用
  • 进程相关概念总结
  • Windows系统各版本环境变量
  • # 08_Elastic Stack 从入门到实践(八)---2
  • 关于文件分片的介绍和应用
  • Linux基础第三天
  • 例举3种强制类型转换和2种隐式
  • |从零开始的Pyside2界面编程| 环境搭建以及第一个ui界面
  • 系统思考:IT企业项目困境分析
  • 基于Java+MySQL+Servlet的留言系统开发全解析
  • 电子电路:怎么理解电子在导体中的热运动?
  • C++数组详解:一维和多维数组的定义、初始化、访问与遍历
  • 算法优化——以“LCR 080. 组合”为例
  • React Native打包报错: Task :react-native-picker:verifyReleaseResources FAILE
  • IIS入门指南:原理、部署与实战
  • 电动车仪表上的数字怎么来的,想知道吗?
  • leetcode3546. 等和矩阵分割 I- medium
  • uniapp中的easycom工作机制
  • Flask快速入门和问答项目源码
  • ​在 ASP.NET 中,HTTP 处理程序(HttpHandler)是处理 HTTP 请求的核心组件​
  • 【Bluedroid】蓝牙HID DEVICE 报告发送与电源管理源码解析
  • Python 中 if 和 else 基础知识的详解和使用
  • 中级统计师-统计学基础知识-第四章 假设检验
  • 【老马】离线版金融敏感信息加解密组件开源项目 encryption-local