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

题目链接:LeetCode 19. 删除链表的倒数第 N 个结点

本题依旧采用双指针的解法,
首先快指针先走 n+1 步,然后快慢指针同时往后走。当快指针走到链表末尾时,慢指针所在的位置刚好是倒数第n-1个结点,
然后利用慢指针,删除倒数第n个结点
完整代码如下:

func removeNthFromEnd(head *ListNode, n int) *ListNode {
    // 双指针法
    // 快指针先走 n+1 步,然后快慢指针同时往后走。当快指针走到链表末尾时,慢指针所在的位置刚好是倒数第n-1个结点,
    // 此时删除第n个结点
    dumpy:=&ListNode{}
    dumpy.Next = head
    fast:=dumpy
    slow:=dumpy
    for n+1 > 0 && fast != nil {
        n--
        fast = fast.Next   //快指针向前走n+1步
    }
    
    for fast != nil {   //快慢指针同时向前走
         slow = slow.Next
         fast = fast.Next
       
    }
    slow.Next = slow.Next.Next   //删除倒数第n个结点
    return dumpy.Next 
}
posted @   小星code  阅读(11)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
点击右上角即可分享
微信分享提示