首页 > 其他分享 >LeetCode19 删除链表的倒数第 N 个结点

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

时间:2024-11-25 18:03:41浏览次数:13  
标签:结点 slow ListNode fast next 链表 LeetCode19 倒数第

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

题目链接:LeetCode19

描述

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

image-20241125174414360

示例

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

思路

定义fast指针和slow指针,初始值为虚拟头结点

fast首先走n + 1步

fast和slow同时移动,直到fast指向末尾

删除slow指向的下一个节点

代码

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

标签:结点,slow,ListNode,fast,next,链表,LeetCode19,倒数第
From: https://www.cnblogs.com/dwhere/p/18568270

相关文章

  • 【剑指Offer刷题系列】两个单链表相交的起始节点
    问题描述给你两个单链表的头节点headA和headB,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回null。图示两个链表在节点c1开始相交:题目数据保证整个链式结构中不存在环。注意,函数返回结果后,链表必须保持其原始结构。自定义评测:......
  • 707. 设计链表
    题目这题卡哥的讲解视频特别好,涵盖了很多细节。自己跟着卡哥代码敲了一遍。单链表:classMyLinkedList{public:structLinkedNode{intval;LinkedNode*next;LinkedNode(intval):val(val),next(nullptr){}};MyLinkedList()......
  • 2024/11/24 链表
    链表1.类型(1)单链表(2)双链表(3)循环链表2.链表在内存的存储方式数组是在内存中是连续分布的,但是链表在内存中可不是连续分布的,而是散乱分布在内存中的某地址上,分配机制取决于操作系统的内存管理。链表是通过指针域的指针链接在内存中各个节点。3.链表的定义定义......
  • 牛客面试必刷TOP101之链表专项
    个人主页:C++忠实粉丝欢迎点赞......
  • 《链表算法:浅谈并实现一下链表各种排序算法及其性能》
    前置知识数据结构-链表数组排序算法:选择排序[解法1],归并排序递归版[解法2],归并排序迭代法[解法3最优解][归并部分基础]合并两个有序链表如果您不满足于此,笔者也提供冒泡排序,插入排序,快速排序的链表写法。以及,我们会在下文讨论为什么不说明希尔排序,堆排序,因为两者不适合......
  • 数据结构-链表、栈、动态数组、队列
    数据结构文章目录数据结构不透明指针定义优点应用场景不透明指针的实现定义不透明指针类型链表知识点节点(Node)头节点(Head)尾节点(Tail)单向链表双链表动态数组队列队列的链式存储队列的顺序存储栈栈的顺序存储栈的链式存储不透明指针定义不透明指针是指指向一个......
  • 203. 移除链表元素
    题目很长时间没接触链表这种数据结构了,看到这道题有点无从下手。看了卡哥讲解视频特别想说的是,卡哥的视频把这个题讲的很好,有些不理解的地方,怎么思考的,卡哥讲的很清楚。跟着卡哥代码敲了一下:方法一:不设置虚拟头节点/***Definitionforsingly-linkedlist.*structLis......
  • 科普文:软件架构之Linux系列【linux内核数据结构:链表、队列、映射、二叉树】
    概叙科普文:软件架构之Linux系列【linux内核数据结构汇总】-CSDN博客Linux内核提供了许多复杂的数据结构,这些结构被广泛用于各种不同的目的,例如存储设备管理、内存管理、进程管理等。以下是一些常见的数据结构以及它们的简要描述:双向链表(list):实现链表的数据结构,每个节点都......
  • [数据结构笔记]从头插入链表的代码实现
    #仅供个人纪录#小白笔记细致慎入回顾思路:链表实现从头插入需要:结构体头结点结构体指针变量 实现功能的函数主函数(当然)结构体包含:data和指向下一个结构体的指针structNode{intdata;structNode*next;//c++写法可以直接Node*next;};//注意别漏掉;结构指针......
  • 小视频代码,反转链表的实现思路分析
    小视频代码,反转链表的实现思路分析//思路一://使用指针publicListNodeReverseList(ListNodehead){if(head==null||head.next==null){returnhead;}ListNodepre=null;ListNodecur=head;while(cur!=null){ListNodenext=......