当前位置: 首页 > news >正文

11-算法打卡-链表-删除链表的倒数第N个节点-leetcode(19)-第十一天

1 题目地址

19. 删除链表的倒数第 N 个结点 - 力扣(LeetCode)19. 删除链表的倒数第 N 个结点 - 给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。 示例 1:[https://assets.leetcode.com/uploads/2020/10/03/remove_ex1.jpg]输入: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 进阶:你能尝试使用一趟扫描实现吗?https://leetcode.cn/problems/remove-nth-node-from-end-of-list/description/


2 题目说明

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


3 解题思路

双指针应用场景,如果要删除倒数第N个节点,让fast节点移动N步,然后在让slow和fast同时移动,直到fast指向链表尾部。删掉slow所指向的节点就可以了。



1 使用虚拟头节点,业务处理逻辑变的简单
2 定义快慢指针fast,slow, 指向虚拟头结点
3 fast先移动N+1步(fast节点领先slow节点N+1步,等fast指向链表末尾的时候,slow节点正好定位在倒数第N+1个节点),举个例子N=2, fast节点先走3步,fast到链表末尾的时候,slow在倒数第4个节点上
4 使用链表移除slow的后一个节点即可


4 代码编写

4.1 双指针

/*** 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 dummyHead = new ListNode(-1, head);// 慢指针指向虚拟头节点ListNode slow = dummyHead;// 快指针指向虚拟头节点ListNode fast = dummyHead;// 快指针向前移动N+1步for (int i=0; i<=n; i++) {fast = fast.next;}// 移动到链表末端结束while (fast != null) {slow = slow.next;fast = fast.next;}// 中间变量暂存待删除的节点ListNode temp = slow.next;// 指向下下个节点slow.next = slow.next.next;// 待删除的节点的next置为null,后期会gc回收temp.next = null;return dummyHead.next;}
}


 


http://www.mrgr.cn/news/98735.html

相关文章:

  • Redis高频面试题(含答案)
  • uniapp-商城-27-vuex 通用方法
  • MGR实现mysql高可用性
  • 4G/5G模组----概念+驱动+调试
  • 【八股】计算机网络
  • 日语学习-日语知识点小记-构建基础-JLPT-N4阶段(5):できます 完成了等 しか。。。ない 只有
  • 什么是进程?
  • 【回眸】Tessy集成测试软件使用指南(一)新手使用篇
  • 【开源项目】Excel手撕AI算法深入理解(三):时序(RNN、mamba)
  • 使用cursor进行原型图设计
  • 概念实践极速入门 - 常用的设计模式 - 简单生活例子
  • Flutter:图片在弹窗外部的UI布局
  • 一文掌握RK3568开发板Android13挂载Windows共享目录
  • vue3获取defineOptions的值;vue3获取组件实例;vue3页面获取defineOptions的name
  • 分布式热点网络
  • AI大模型学习九:‌Sealos cloud+k8s云操作系统私有化一键安装脚本部署完美教程
  • 集群搭建Weblogic服务器!
  • 《Against The Achilles’ Heel: A Survey on Red Teaming for Generative Models》全文阅读
  • 红宝书第四十七讲:Node.js服务器框架解析:Express vs Koa 完全指南
  • 前端基础之《Vue(5)—组件基础(1)》