当前位置: 首页 > 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;}}}

相关文章:

  • STC89C52单片机模拟洗衣机源代码程序 C语言程序 按键设置洗衣模式和洗衣时间 洗衣完成后语音报警提示
  • 机器学习(11)——xgboost
  • JavaScript 中的 Window 对象详解
  • 超越想象:利用MetaGPT打造高效的AI协作环境
  • 1_Spring 【IOC容器的创建】
  • deepseek手动实现一个Spring Starter具体方案
  • 【2025版】SpringCloud Gateway网关快速入门
  • 系统启动时开启选择内核菜单
  • 【内存分配】
  • Python 向量化操作如何实现多条件筛选
  • 双列集合——HashMap,LinkedHashMap,TreeMap基本介绍
  • 聚类算法K-means和Dbscan的对比
  • React Native打包报错: Task :react-native-picker:verifyReleaseResources FAILE
  • 《Python星球日记》 第88天:ChatGPT 与 LangChain
  • 心理学层次结构
  • java中的Servlet2.x详解
  • 基于LabVIEW的双音多频系统设计
  • 【PINN】DeepXDE学习训练营(27)——pinn_forward-diffusion_1d_resample.py
  • 游戏:英雄联盟游戏开发代码(谢苏)
  • c++从入门到精通(六)--特殊工具与技术-完结篇
  • 铜川耀州窑遗址内违法矿场存在多年,省市区文物部门多次处罚叫停仍在生产
  • 墨西哥海军一载两百余人帆船撞上纽约布鲁克林大桥,多人落水
  • 雅安市纪委监委回应黄杨钿甜耳环事件:相关政府部门正在处理
  • 乌称苏梅州一公共汽车遭俄军袭击,致9死4伤
  • 北京韩美林艺术馆党支部书记郭莹病逝,终年40岁
  • 美国失去最后的AAA主权评级,继标普、惠誉后再遭穆迪降级