js求解《初级算法》19.删除链表的倒数第N个结点

news2024/11/15 23:38:30

一、题目描述

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

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

 输出:[1,2,3,5]

二、思路

        用虚拟头结点+双指针的方法解决该题,我们知道题目要求我们返回的是链表的头结点,所以头结点我们需要用一个变量指向它,保存它的位置,所以虚拟头结点完美胜任该功能,再初始化两个指向虚拟头结点的指针,使两个指针之间的跨度是n(也就是fast指针先走n位),然后在快指针不越界的条件下两个指针同时移动,保持跨度的作用就是当快指针指向末尾null的时候,慢指针指向刚刚好就是我们要删除的元素位置,但是我们希望慢指针指向的是要删除元素的前一个位置,所以两个指针之间的跨度应该是n+1,就是让快指针多走一步(或者用快指针的next指针判断是否为null),慢指针满足了我们的要求,就可以执行删除操作了,也就是慢指针的next指向下下个元素,最后返回头结点。

综上所述,分四步:

  1. 初始化一个指向头结点的虚拟节点
  2. 让快指针先走n步,使快慢指针跨度是n
  3. 判断快指针下一位是否是null,true就说明慢指针处于删除元素的前一个位置了,false就继续移动快慢指针
  4. 删除指定位置元素,返回头结点

三、代码展示

var removeNthFromEnd = function(head, n) {
  let ret = new ListNode(0, head), // 定义一个虚拟头结点指向头结点
      slow = fast = ret;           // 快慢指针指向虚拟头结点
  while(n--) fast = fast.next;     // 快指针移动n-1步
  while (fast.next !== null) {     // 若改为fast,慢指针就指向了倒数第n位,需要指向它的n-1位
      fast = fast.next; 
      slow = slow.next
  };
  slow.next = slow.next.next;     // 此时慢指针在倒数n-1位,可以删除倒数第n个节点
  return ret.next;                // ret是虚拟头结点,指向头结点
};

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

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

相关文章

SpringMVC源码:参数解析、方法调用与返回值处理

参考资料: 《SpringMVC源码解析系列》 《SpringMVC源码分析》 《Spring MVC源码》 写在开头:本文为个人学习笔记,内容比较随意,夹杂个人理解,如有错误,欢迎指正。 前文: 《SpringMVC源码&a…

并发包中的ConcurrentLinkedQueue和LinkedBlockingQueue有什么区别?

第20讲 | 并发包中的ConcurrentLinkedQueue和LinkedBlockingQueue有什么区别? 在上一讲中,我分析了 Java 并发包中的部分内容,今天我来介绍一下线程安全队列。Java 标准库提供了非常多的线程安全队列,很容易混淆。 今天我要问你的…

谷歌浏览器和火狐浏览器永久禁用缓存【一劳永逸的解决方式】

目录 前言 谷歌浏览器 方式一 方式二 火狐浏览器 前言 缓存对于开发人员来说异常的痛苦,很多莫名其妙的bug就是由缓存导致的,但当我们在网上查找禁用缓存的方式时,找到的方式大多数都是在开发者工具的面板中勾选禁用缓存的选项,但这种方式有个弊端就是需要一直打开这个…

软件测试工程师没有碰到算我输-2023最全的接口测试面试题及参考答案

接口测试最近几年被炒的火热了,越来越多的测试同行意识到接口测试的重要性。接口测试为什么会如此重要呢? 主要是平常的功能点点点,大家水平都一样,是个人都能点,面试时候如果问你平常在公司怎么测试的,你除…

【pytorch】使用mixup技术扩充数据集进行训练

目录1.mixup技术简介2.pytorch实现代码,以图片分类为例1.mixup技术简介 mixup是一种数据增强技术,它可以通过将多组不同数据集的样本进行线性组合,生成新的样本,从而扩充数据集。mixup的核心原理是将两个不同的图片按照一定的比例…

【嵌入式开发】iperf

iperf一级目录用法help文档iperf参数功能iperf测试实例测试网口上行速率测试网口下行速率perf 是一个网络性能测试工具。Iperf可以测试最大TCP和UDP带宽性能,具有多种参数和UDP特性,可以根据需要调整,可以报告带宽、延迟抖动和数据包丢失。一…

小程序项目在hbuilder里面给它打包成app

小程序项目临时有些登录需求,需要把(小程序某些功能通过条件编译让它显示到app上)小程序打包成app的话就必须需要一个打包的证书,证书的话就要去重新生成,苹果电脑可以去自动生成证书,平时是用windows进行开…

Java的四种引用强软弱虚及其使用场景

一.强引用 回收时机:在内存不足时也不会被回收。 使用方式:String str new String("str"); 使用场景:是平常用的最多的引用 二.软引用 回收时机: 在内存不足时会被回收。 使用方式:SoftRefere…

阿里云全量物理备份.xb备份文件本地恢复

一、下载备份文件并上传到本地 二、安装转码软件 1、yum install https://repo.percona.com/yum/percona-release-latest.noarch.rpm2、yum install percona-xtrabackup-24三、解包并解压 1、先解包 cat test1_qp.xb | xbstream -x -v -C /home/mysql/data 2、然后解压&…

【历史上的今天】3 月 6 日:Unix 版权争夺战;豆瓣网上线;谷歌推出了 Google Play

整理 | 王启隆 透过「历史上的今天」,从过去看未来,从现在亦可以改变未来。 今天是 2023 年 3 月 6 日,在 1475 年的今天,大艺术家米开朗琪罗诞辰。米开朗琪罗是意大利文艺复兴时期的雕塑家、画家,他活到 89 岁&#…

Web服务器基础介绍与Apache的简单介绍(LAMP架构与搭建论坛)

目录 Web服务器基础介绍 一.HTML是什么? 二.静态网页和动态网页 1.静态网页 2.动态网页 3.动态网页语言 三.HTTP协议 1.HTTP协议是什么? 2.HTTP方法 3.HTTP状态码 4.HTTP请求流程分析 4.1 请求报文 4.2 响应报文 Apache的简单介绍 一.Apa…

如何找回回收站删除的视频?这三种方法可以试试

在使用电脑过程中,我们可能会误删重要的文件,特别是影音文件。在这样的情况下,我们可以从计算机的回收站中找回已经被删除的视频。但是有时候,我们可能会不小心清空回收站,这时候就需要一些技巧来恢复回收站删除的视频…

走进JVM

JVM的位置 在操作系统之上,可以想象成一个软件,Java程序都运行在上面 JVM结构图 JVM调优的位置 99%的调优在堆中,极少数在方法区中 很多第三方插件都是在执行引擎那块地方做出修改而来,比如Lombook在程序运行时动态生成get/s…

VSYNC研究

Vsync信号是SurfaceFlinger进程中核心的一块逻辑,我们主要从以下几个方面着手讲解。软件Vsync是怎么实现的,它是如何保持有效性的?systrace中看到的VSYNC信号如何解读,这些脉冲信号是在哪里打印的?为什么VSYNC-sf / VS…

YOLOv5源码逐行超详细注释与解读(1)——项目目录结构解析

前言 前面简单介绍了YOLOv5的网络结构和创新点(直通车:【YOLO系列】YOLOv5超详细解读(网络详解)) 在接下来我们会进入到YOLOv5更深一步的学习,首先从源码解读开始。 因为我是纯小白,刚开始下…

【看表情包学Linux】进程创建 | 进程终止 | 分叉函数 fork | 写时拷贝 | 内核数据结构缓冲池 | slab 分派器

爆笑教程《看表情包学Linux》👈 猛戳订阅!​​​​​💭 写在前面:本章我们主要讲解进程的创建与终止。首先讲解进程创建,fork 函数是我们早在讲解 "进程的概念" 章节就提到过的一个函数,在上个章…

gma 地理空间绘图:(1) 绘制简单的世界地图-3.设置地图框

内容回顾 gma 地理空间绘图:(1) 绘制简单的世界地图-1.地图绘制与细节调整 gma 地理空间绘图:(1) 绘制简单的世界地图-2.设置经纬网 方法 SetFrame(FrameColor ‘black’, FrameWidth 0.6, ShowFrame True, ShowLeft True, ShowBottom True, Sho…

Golang alpine Dockerfile 最小打包

最近在ubantu 上进行了 iris项目的alpine 版本打包&#xff0c;过程遇到了一些问题&#xff0c;记录一下。 golang版本 &#xff1a;1.18 系统&#xff1a;ubantu 代码结构 Dockfile内容 FROM alpine:latest MAINTAINER Si Wei<3320376695qq.com> ENV VERSION 1.1 ENV G…

格密码学习笔记(二):连续极小、覆盖半径和平滑参数

文章目录最短距离和连续极小值距离函数和覆盖半径格的平滑参数致谢最短距离和连续极小值 除了行列式&#xff0c;格的另一个基本量是格上最短非零向量的长度&#xff0c;即格中最短距离&#xff0c;其定义为 λ1min⁡x,y∈L,x≠y∥x−y∥min⁡z∈L,z≠0∥z∥.\begin{aligned} …

一起来学ASM字节码插桩:从分析class文件结构开始

文章目录Class字节码class字节码构成类型描述符基本类型描述符非数组的引用类型数组引用类型方法描述符OpCode 操作码Class字节码 Java 能做到 一次编译&#xff0c;到处运行&#xff0c;主要就是靠 class字节码 文件&#xff0c;也就是 java 文件经过编译之后 .java -> .c…