力扣19.删除链表的倒数第N个节点

news2024/10/11 19:45:37

题目链接:19. 删除链表的倒数第 N 个结点 - 力扣(LeetCode)

给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。

示例 1:

输入:head = [1,2,3,4,5], n = 2
输出:[1,2,3,5]

示例 2:

输入:head = [1], n = 1
输出:[]

示例 3:

输入:head = [1,2], n = 1
输出:[1]

提示:

  • 链表中结点的数目为 sz

  • 1 <= sz <= 30

  • 0 <= Node.val <= 100

  • 1 <= n <= sz

两趟扫描

/**
 * 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 pre=new ListNode();
        ListNode curr=null;
        pre.next=head;
        curr=pre;
        //倒数第n个节点即正数第num-n+1个节点
        int num=0;
        while(curr.next!=null){
            num++;//记录链表节点总个数
            curr=curr.next;
        }
        int N=num-n+1;//正数第N个节点
        curr=pre;
        int c=N-1;//循环次数
        while(c!=0){
            curr=curr.next;
            c--;
        }
        curr.next=curr.next.next;
        return pre.next;
    }
}

进阶:你能尝试使用一趟扫描实现吗?

一趟扫描(双指针)

如果要删除倒数第n个节点,让fast先移动n步,然后让fast和slow同时移动,直到fast指向链表末尾。删掉slow所指向的节点就可以了。

/**
 * 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 dumyhead=new ListNode();
        dumyhead.next=head;
        ListNode fast=dumyhead;
        ListNode low=dumyhead;

        //fast比low先走n步
        while(n!=0){
            fast=fast.next;
            n--;
        }
        while(fast.next!=null){
            fast=fast.next;
            low=low.next;
        }
        low.next=low.next.next;
        return dumyhead.next;
    }
}

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

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

相关文章

【Linux调试工具】gdb/cgdb

文章目录 gdb 简介gdb 的主要功能 gdb的用法如何进入gdb显示代码如何运行程序如何打断点和取消断点逐语句调试逐行逐行执行代码&#xff08;s&#xff09;调试工具 总结 gdb 简介 GDB&#xff08;GNU Debugger&#xff09;是GNU项目中的一款强大的调试工具&#xff0c;广泛应用…

数字隔离器的技术竞争

长期以来&#xff0c;光耦合器一直被人们信赖&#xff0c;因为它能够在电路的不同部分之间提供电气隔离&#xff0c;确保信号的安全传输&#xff0c;同时保护元件免受高压影响。然而&#xff0c;近年来&#xff0c;数字隔离器已成为一种强大的替代品&#xff0c;在速度、寿命和…

Map的实现类:TreeMap

1.存储结构&#xff1a;红黑树 2.实现了SortedMap接口&#xff08;是Map的子接口&#xff09;&#xff0c;可以对key自动排序。 3.实例代码&#xff1a;Student类和Demo03 如果出现类转换异常 参考【TreeSet&#xff08;红黑树&#xff09;】 package com.map;import java…

苍穹外卖P19--异常处理

以上传数据库数据重复为例&#xff0c;进行异常处理。 接口文档报错&#xff1a; 重新启动&#xff1a;

Arduino中使用PS2手柄

目录 1、PS2手柄介绍 2、PS2库文件添加 3、Auduino代码 4、测试 5、测试程序和库文件下载连接 1、PS2手柄介绍 PS2手柄介绍见下面博客 STM32中使用PS2手柄_stm32 ps2-CSDN博客 PS2手柄按钮分布 2、PS2库文件添加 库文件和测试程序一起打包提供下载 3、Auduino代码 #in…

【数据结构】二叉堆一文详解,附demo

有时候也挺迷惑的&#xff0c;技术那么多&#xff0c;感觉学什么都来不及&#xff0c;又什么都得学&#xff0c;经常一看别人&#xff0c;哇&#xff0c;比你年轻比你厉害&#xff0c;然后自己emo一下又要鸡血模式&#xff0c;就挺无语的&#xff0c;但愿我们的坚持与努力都不白…

“炫我”受邀出席虚拟现实及元宇宙产业创新论坛!

当前&#xff0c;新一轮科技革命和产业变革向纵深演进&#xff0c;虚拟现实及元宇宙等相关产业加速发展&#xff0c;催生了新产业新业态新模式&#xff0c;发展潜力巨大、应用前景广阔。 9月27日&#xff0c;由北京市科学技术委员会、中关村科技园区管理委员会&#xff0c;北京…

攻防世界1

pwnstack 发现是64位文件 发现vuln双击进入 看到read知道这里是要将B1&#xff08;177&#xff09;的数据输入buf&#xff0c;这里涉及了栈溢出 发现system和binsh 后门 A8十进制是168 exp&#xff1a; from pwn import * context(oslinux,archamd64,log_leveldebug) io rem…

生产及质量BI应用场景方案(可编辑37页PPT)

荐言分享&#xff1a;随着全球化的深入发展&#xff0c;制造业面临的竞争日益激烈。为了在市场中脱颖而出&#xff0c;企业需要不断提升自身的生产效率、降低成本&#xff0c;同时保证产品质量。现代消费者的需求日益多样化&#xff0c;对产品的个性化、定制化和品质要求越来越…

【unity踩坑】打开vs2022没有文字联想/杂项文件

unity打开vs2022没有文字联想 修改外置编辑器安装unity开发插件vs编辑器显示杂项文件 修改外置编辑器安装unity开发插件 参考 在unity项目里选择Edit-> Preferences->External Tools然后更换编辑器 在vs工具界面添加unity游戏开发选项。 重新打开还是有问题&#xff…

记录搜罗到的Matlab 对散点进行椭圆拟合

需要基于一些散点拟合椭圆估计并计算出椭圆的参数和周长&#xff0c;搜罗到直接上代码 &#xff08;1&#xff09;有用的椭圆拟合及参数计算函数 function W fitellipse(x,y) % 构造矩阵 D [x.*x, x.*y, y.*y, x, y,ones(size(x))]; S D*D; G zeros(6); G(1,3) 2; G(3,1)…

深入探讨B+树索引的基本概念、工作原理以及在MySQL中的应用

文章目录 1. B树的基本概念2. B树在MySQL中的实现3. 示例代码4. 结论 在数据库管理系统中&#xff0c;索引是一种特殊的文件&#xff0c;它能够提高数据检索的速度。MySQL作为最流行的开源关系型数据库之一&#xff0c;提供了多种索引类型来满足不同的性能需求。其中&#xff0…

windows端口被占用但是查不到进程的问题排查

在开发环境上经常遇到端口被占用&#xff0c;但是 netstat -ano|findstr 3306 查不到进程号&#xff0c;没法强杀解决。 这种情况&#xff0c;很有可能端口被排除了&#xff0c;可用命令&#xff1a; netsh interface ipv4 show excludedportrange protocoltcp 可以看到mysql的…

web-前置技能(HTTP协议)-CTFHub

前言 在众多的ctf平台当中&#xff0c;作者认为ctfhub对于初学者来说&#xff0c;是入门平台的不二之选。ctfhub通过自己独特的技能树模块&#xff0c;可以帮助初学者来快速入门。具体请看官方介绍&#xff1a;CTFHub。 作者正在更新ctfhub系列&#xff0c;希望小伙伴们多多支…

多元线性回归:机器学习中的经典模型探讨

引言 多元线性回归是统计学和机器学习中广泛应用的一种回归分析方法。它通过分析多个自变量与因变量之间的关系&#xff0c;帮助我们理解和预测数据的行为。本文将深入探讨多元线性回归的理论背景、数学原理、模型构建、技术细节及其实际应用。 一、多元线性回归的背景与发展…

小米开放式耳机好不好用?小米、南卡、倍思、飞利浦热门开放式耳机一周测评!

​开放式耳机正成为潮流&#xff0c;它们不仅佩戴舒适&#xff0c;音质也出色&#xff0c;特别受到音乐发烧友和运动爱好者的追捧。作为一名多年的数码测评博主&#xff0c;我也早就对开放式耳机感兴趣了&#xff0c;只是最近一直没时间来好好测评下&#xff0c;今天一下子买了…

计算机网络实验二:FTP服务器配置

ftp服务器配置 要求&#xff1a; 1. 学会配置FTP服务器、能在FTP客户端进行下载和上传文件 2. 进一步熟悉ipconfig和ping命令 3. 进一步理解FTP工作原理和流程 1、FTP服务器配置&#xff08;FileZilla Server&#xff09; 第一步安装FileZilla Server&#xff0c;直接下一步…

二、安装vmtools

1、 介绍 vmtools 安装后&#xff0c;可以让我们在 windows 下更好的管理 vm 虚拟机。可以设置 windows 和 centos 的共享文件夹 当时当我们发现安装虚拟机工具位置是灰色的 右击打开终端 在终端输入命令 yum list installed | grep open-vm-*yum list installed 命令会列出…

TikTok代理IP哪里找?

对于那些希望通过社交媒体打造个人品牌的人来说&#xff0c;TikTok是现在热门的平台&#xff0c;他的流量与曝光不可小觑&#xff0c;相信很多跨境营销会选择他进行多账号营销。问题是&#xff0c;TikTok多账号很容易遇到封禁问题&#xff0c;那么如何解决&#xff1f; 一、什么…

如何查看1688阿里巴巴热销选品数据?

✅路径&#xff1a;店雷达选品中心—1688选品库—选择类目 选品前先选类目&#xff0c;初步定位符合自己产品方向后再去分析市场&#xff0c;想看全市场的品类就选择一级类目&#xff0c;也有二三级类目细分选择&#xff0c;根据商家经营目标而定 接着选择想看的市场统计周期&…