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

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;
    }
}
posted @ 2024-11-25 17:49  dwhere  阅读(2)  评论(0编辑  收藏  举报