代码随想录day4-删除最后第几个节点

73 阅读1分钟

题目简介

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

题目解决技巧

使用双指针和虚拟头节点实现最后第几个节点删除

题目陷阱

  1. 不存在不能删除节点
  2. 边界条件为慢指针的下一个节点是否为空
  3. 不存在头节点为空的情况

解题代码

public ListNode removeNthFromEnd(ListNode head, int n) {
    ListNode dummy = new ListNode(1, head);
    ListNode fast = head;
    ListNode slow = dummy;
    int time = n;
    while(fast != null){
        if (n != 0){
            fast = fast.next;
            n--;
        }else {
            slow = slow.next;
            fast = fast.next;
        }
    }
    if (slow.next != null){
        slow.next = slow.next.next;
    }
    return dummy.next;
}