首页 > 其他分享 >19. 删除链表的倒数第 N 个结点(中)

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

时间:2023-10-29 16:55:33浏览次数:30  
标签:head slow cur 19 fast next 链表 倒数第

目录

题目

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

法一、循环

class Solution:
    def removeNthFromEnd(self, head: ListNode, n: int) -> ListNode:
        # Step 1: 获取链表长度
        length = 0
        cur = head
        while cur != None:
            length += 1
            cur = cur.next

        # 处理删除头节点的情况
        if length == n:
            return head.next

        # Step 2: 找到倒数第 N 个节点的前一个节点
        cur = head
        for _ in range(length - n - 1):
            cur = cur.next

        # Step 3: 删除节点,并重新连接
        cur.next = cur.next.next
        return head
  • for _ in range(length - n - 1):下划线 _ 是一个通用的变量名,通常用于表示一个临时或不需要使用的变量。在循环中,它表示一个占位符,用于表示我们不需要使用循环变量的值。

法二、快慢指针

class Solution:
    def removeNthFromEnd(self, head: ListNode, n: int) -> ListNode:
        # 初始化快慢指针
        slow = head
        fast = head
        # 将快指针向前移动 n 步
        for _ in range(n):
            fast = fast.next
        # 处理删除头节点的情况
        if fast is None:
            return head.next
        # 同时移动快慢指针,直到快指针到达链表末尾
        while fast.next != None:
            slow = slow.next
            fast = fast.next
        # 删除倒数第 N 个节点
        slow.next = slow.next.next
        return head 

标签:head,slow,cur,19,fast,next,链表,倒数第
From: https://www.cnblogs.com/lushuang55/p/17796040.html

相关文章

  • #链表#CF706E Working routine
    题目给出一个\(n*m\)的矩阵,每次交换两个等大的矩阵,输出\(q\)次操作后的矩阵分析维护向右和向下的指针,考虑最后输出只需要从每行的头指针向右跳,那么修改实际上是将矩阵左边一列、上面一行、最后一行和最后一列向右下指针交换时间复杂度\(O((n+m)Q)\)代码#include<cs......
  • 237. 删除链表中的节点(中)
    目录题目代码题目有一个单链表的 head,我们想删除它其中的一个节点 node。给你一个需要删除的节点 node 。你将 无法访问 第一个节点  head。链表的所有值都是唯一的,并且保证给定的节点 node 不是链表中的最后一个节点。删除给定的节点。注意,删除节点并不是指从......
  • 【Asp.net】Asp.net core中IIS配置注意事项一、提示:关于IIS上运行ASP.NET Core 站点的
    1、应用地址池设为无托管代码一、提示:关于IIS上运行ASP.NETCore站点的“HTTP500.19”错误安装dotnet-hosting-3.1.2-win.exeASP.NETCore3.1Runtime(v3.1.2)下载地址:https://download.visualstudio.microsoft.com/download/pr/dd119832-dc46-4ccf-bc12-69e7bfa61b18/990843c6......
  • 【2023潇湘夜雨】LTSC2021_Ent_21H2.19044.3636软件选装纯净版10.28
    【系统简介】=============================================================1.本次更新母盘来自Windows10LTSC_2021Build19044.3636。2.增加部分优化方案,手工精简部分较多。3.OS版本号为19044.3636。精简系统只是为部分用户安装,个别要求高的去MSDN下。4.集成《DrvCeo-2.15.0.......
  • CSP模拟57联测19_全球覆盖
    题面:赛时给我搞破防了,没有一点思路。Part1对于这四种神奇有病的操作,可以把\(x\)轴和\(y\)轴分开考虑,它们之间互不影响。最后答案就是\(x\)轴上的最长距离乘\(y\)轴上的最长距离。这样就把二维的问题拆分成了两个序列上的问题。现在问题变成了给定几个区间,可以取区间的......
  • SharePoint 2019开发:如何通过脚本来变更SharePoint Group的 Permission Level
    Blog链接:https://blog.51cto.com/13969817很多企业出于安全管理需要,ITadmin需要根据SecurityPolicy或者审计要求定期批量的修改SharePoint权限,比如添加或者删除某个用户,或者更换某个Group的Permissionlevel等等,如果单纯的修改一个网站,那么我们可以直接到SiteSettings的Permiss......
  • 19 redis实现分布式锁
    使用setnx命令获取锁,然后使用expire命令,保证有个过期时间,让锁能够及时释放。setnx的含义是,当要设置的key不存在时,那么这个字符串设置成功。否则,就会设置失败。它避免了重复执行命令,导致前值被覆盖的问题。......
  • 代码随想录第四天 | 24. 两两交换链表中的节点 19.删除链表的倒数第N个节点 面试题
    question1:SwapNodesinPairshttps://leetcode.cn/problems/swap-nodes-in-pairs/IwasalittleconfusedatfirstbecauseI'mthinkingwhethershouldIcreatanewhead,butsoonIcameupwiththeideaofcreatpre=Noneandwithan'if-els......
  • 【安洵杯 2019】easy_serialize_php
    【安洵杯2019】easy_serialize_php收获php反序列化逃逸数组变量覆盖POST请求体传递数组分析代码:<?php$function=@$_GET['f'];functionfilter($img){$filter_arr=array('php','flag','php5','php4','fl1g');......
  • 206.反转链表
    1.题目介绍2.题解2.1迭代假设链表为1→2→3→∅,我们想要把它改成∅←1←2←3。在遍历链表时,将当前节点的next指针改为指向前一个节点。由于节点没有引用其前一个节点,因此必须事先存储其前一个节点。在更改引用之前,还需要存储后一个节点。最后返回新的头引用。作者:力扣......