首页 > 其他分享 >删除链表倒数第N个节点(19)

删除链表倒数第N个节点(19)

时间:2024-07-26 22:07:18浏览次数:16  
标签:dummy slow ListNode 19 fast next 链表 节点 倒数第

双指针法

双指针法主要是最开始有两个指针fast,slow都指向链表的虚拟头节点dummy,然后快指针先移动,这里需要先向后移动n+1位(因为你最终是要找到目标节点的前一个节点),然后slow和fast节点就开始同时移动,直至fast指向链表的最后一个节点的下一个指向null,此时slow节点就指向了链表目标节点的前一个节点

class Solution {
    public ListNode removeNthFromEnd(ListNode head, int n) {
        ListNode dummy=new ListNode(0);
        dummy.next=head;
        ListNode fast=dummy;
        ListNode slow=dummy;
        int count=n+1;
        while(count-->0){
            fast=fast.next; 
        }
        while(fast!=null){
            slow=slow.next;
            fast=fast.next;
        }
        slow.next=slow.next.next;
        return dummy.next;
    }
}

普通法

class Solution {
    public ListNode removeNthFromEnd(ListNode head, int n) {
        int length=0;
        ListNode get_length=head;
        while(get_length!=null){
            length++;
            get_length=get_length.next;
        }

        ListNode dummy=new ListNode(0);
        dummy.next=head;
        ListNode temp=dummy;
        int count=length-n;
        while(count-->0){
            temp=temp.next;
        }
        temp.next=temp.next.next;
        return dummy.next;
    }
}

标签:dummy,slow,ListNode,19,fast,next,链表,节点,倒数第
From: https://www.cnblogs.com/dfj-blog/p/18326357

相关文章

  • Linux内核链表源码的简单操作
    一、Linux内核链表源码的获取下载系统源码的方法常见的有两种:第一种访问网站下载:kernel.org第二种输入Linux命令下载:sudoaptinstalllinux-source-5.15.0(一般这种下载的是当前系统所用到的系统源码版本)下载完之后在/usr/src中可找到系统源码的压缩包,可以解压......
  • 反转链表(206)
    双指针法一个节点为cur最开始的时候指向head,pre最开始的时候指向null,然后cur,pre节点一次向后移动进行遍历操作,直至cur指向null,链表遍历结束,最后返回pre节点就是反转链表后的一个头节点classSolution{publicListNodereverseList(ListNodehead){ListNodepr......
  • 两两交换链表中的节点(24)
    两两交换,我们定义一个虚拟头节点指向我们链表的头节点,然后我们就可以将链表的第一个节点的下一个节点指向为第二个节点的下一个节点,然后第二个节点的下一个节点指向第一个节点,然后虚拟头节点指向我们的第二个节点就完成了前两个节点的交换classSolution{publicListNodes......
  • 移除链表元素
    这里注意我们操作链表的时候都要使用临时指针来进行遍历链表的操作,不然会改变链表的原始数据,这里我使用两种方式来进行删除的操作原链表删除元素classSolution{publicListNoderemoveElements(ListNodehead,intval){//if(head==null){//ret......
  • 单链表的实现和操作
    目录一.前言二.单链表的定义和结构三.单链表的操作一.前言    线性表的链式表示又称为非顺序映像或链式映像。简而言之,链表可以理解为由指针链连接的n个结点组成的。其中每一个结点包括数据域和指针域。值得注意的是,与顺序表不同,链表中的逻辑次序与物理次序不......
  • 单链表的建立
    一.前言    单链表的建立一共有两种方法,一种是头插法,将元素插入在链表的头部,也叫前插法。另外一种则就是尾插法,将元素插入在链表尾部,也叫后插法。二.头插法    首先从一个空表开始,重复读入数据;接着生成新结点,将读入的数据存放到新结点的数据域当中;最后从......
  • [ZJCTF 2019]NiZhuanSiWei
    [ZJCTF2019]NiZhuanSiWeiStep1开靶机,获得php源码<?php$text=$_GET["text"];$file=$_GET["file"];$password=$_GET["password"];if(isset($text)&&(file_get_contents($text,'r')==="welcometothezjctf......
  • CF1988F 较草题解
    \[\begin{aligned}&f_{i,j,k},g_{i,j,k}\to(i\text{permutation},j\text{premaxorsufmax},k(a[l]>a[l-1]))\\&\text{Initialize:}f_{1,1,0}=g_{1,1,0}=1\\&\text{Transferforf,g}\\&f_{i,j,k}=f_{i-1,j-1,k-1......
  • 我收到这个错误! OSError: [WinError 193] %1 不是有效的 Win32 应用程序
    我今天尝试运行Python.exe文件并收到以下错误!有人知道什么问题以及解决它的解决方案吗?File"report-auto-final-v2.7.py",line60,in<module>File"selenium\webdriver\chrome\webdriver.py",line45,in__init__File"selenium\webdriver\chromium\we......
  • sqlserver2019--订阅发布
    一、连接数据库 1.查看sqlserver主机名称 2.通过SSMS工具连接sqlserver 二、发布1.复制--本地发布---右击选择新建发布 2.启动代理服务,为了防止自动启动失败,可以选择手动启动,然后去sqlserver服务器启动此服务 3.选择快照文件夹,如果是跨机器,需要共享文件夹(本次......