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

小豆丁 1年前 ⋅ 1097 阅读
19. 删除链表的倒数第 N 个结点
给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。

进阶:你能尝试使用一趟扫描实现吗?

 

示例 1:


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

解析

快慢指针解决

class Solution123 {
    public ListNode removeNthFromEnd(ListNode head, int n) {
        ListNode delNode = head;
        ListNode retNode = head;
        while (head.next != null) {
            if(n <= 0) delNode = delNode.next;
            head = head.next;
            n--;
        }
        if(n == 1) return retNode.next;
        delNode.next = delNode.next.next;
        return retNode;
    }
}