Leetcode - 19 - 删除链表的倒数第 N 个结点

news/2024/11/27 23:44:53/

19. 删除链表的倒数第 N 个结点

题目描述

给你一个链表,删除链表的倒数第 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

 

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

解法

方法一:快慢指针

定义两个指针 fastslow,初始时都指向链表的虚拟头结点 dummy

接着 fast 指针先向前移动 n 步,然后 fastslow 指针同时向前移动,直到 fast 指针到达链表的末尾。此时 slow.next 指针指向的结点就是倒数第 n 个结点的前驱结点,将其删除即可。

时间复杂度 O(n),空间复杂度 O(1)。其中 n 为链表的长度。

Java

/*** 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 ans = new ListNode(0,head);ListNode slow = ans;ListNode fast = head;while(fast != null && n>0){fast = fast.next;n--;}while(fast != null){fast = fast.next;slow = slow.next;}slow.next = slow.next.next;ans = ans.next;return ans;}
}

http://www.ppmy.cn/news/10895.html

相关文章

Django(14):分页查询

使用Django框架内置模块django.core.paginator中封装的Paginator类Page类进行分页功能实现。其中Paginator是分页器&#xff0c;从分页器中可以得到Page&#xff0c;即分页对象。源码如下&#xff1a; import collections.abc import inspect import warnings from math impor…

接口测试——postman和Jemter

接口测试——postman和Jemterpostmanpostman工作原理postman入门postman的基础用法postman的高级用法使用postman管理测试用例批量执行测试用例postman断言环境变量和全局变量postman关联postman请求前置脚本postman参数化及生成测试报告参数化与数据驱动postman生成测试报告je…

JDK并发编程Actomic和AQS详解

JDK并发编程Actomic和AQS详解1 Atomic系列优化加锁并发性能1.0 i和ActomicInteger之间的差别分析1.1 AtomicInteger中的CAS无锁化原理1.2 AtomicInteger源码剖析&#xff1a;仅限JDK内部使用的Unsafe类1.3 AtomicInteger源码剖析&#xff1a;无线重复循环以及CAS操作1.4 Atomic…

Kubernetes(k8s) 笔记总结(二)

提示&#xff1a;针对kubernetes的工作均衡学习。 文章目录1. Kubernetes 创建资源方式2. Kubernetes 操作NameSpace3. Kubernetes的 Pod应用3.1 Pod的 解释3.2 通过命令行来创建一个pod3.3 配置文件方式创建一个Pod3.4 dashboard 可视化操作Pod3.5 针对Pod的一些细节操作3.6 P…

基于 js 制作一个贪吃蛇小游戏

目录前言&#xff1a;项目效果展示&#xff1a;代码实现思路&#xff1a;使用方法&#xff1a;实现代码&#xff1a;总结&#xff1a;前言&#xff1a; 在工作学习之余玩一会游戏既能带来快乐&#xff0c;还能缓解生活压力&#xff0c;跟随此文一起制作一个小游戏吧。 描述&…

Java日期时间类

Java日期时间类Datenew Date()**获取当前系统时间**通过**指定毫秒数得到时间**format**指定日期格式**SimpleDateFormat的模式字母&#xff1a;parse()可以把**格式化的String转成对应Date**Calendar&#xff08;日历&#xff09;创建日期类对象获取日历对象的某个日历字段第三…

IPO合肥马郢计划:构筑美丽田园综合体上市

合肥市长丰县马郢社区曾经是省级贫困村&#xff0c;为了让这个原本相对落后美丽田园 上市拥有崭新的面貌。2017年至今实施美丽田园综合体、旅游扶贫等项目。马郢社区共有13个村民组、408户、1778人&#xff0c;全村建档立卡贫困户年人均收入仅2000多元。2015年&#xff0c;由杨…

python制作课堂点名系统,从此老师对我关爱有加

前言 大家早好、午好、晚好吖 ❤ ~ 准备工作 首先我们需要准备好点名的姓名文件&#xff0c;使用的时候导入进去就可以开始点名了。 新建一个文本文档&#xff0c;将姓名设置设置好&#xff0c;如下&#xff1a; 使用系统库和第三方库都比较常规 from PyQt5.QtWidgets impo…