Loading

19. [链表][双指针]删除链表的倒数第N个节点

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

方法一:哨兵节点+快慢指针

  • 在本题中,快慢指针的用法为:让快指针先走几步,步数由 \(n\) 决定。
  • 使用哨兵节点的理由是为了避免删除节点为头结点引发的空指针异常。
class Solution {
    public ListNode removeNthFromEnd(ListNode head, int n) {
        ListNode sentinel = new ListNode(-1);
        sentinel.next = head;
        ListNode slow = sentinel, fast = sentinel;
        while(--n != -2){
            fast = fast.next;
        }
        while(fast != null){
            slow = slow.next;
            fast = fast.next;
        }
        slow.next = slow.next.next;
        return sentinel.next;
    }
}
posted @ 2020-10-20 12:16  上海井盖王  阅读(70)  评论(0)    收藏  举报