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

思路:

双指针法,定义一个快指针先跑n步,慢指针开始跑,当快指针跑到最后一个元素的时候,慢指针下一个结点就是要删除的结点

代码:

class Solution {
    //输入:head = [1,2,3,4,5], n = 2
    //输出:[1,2,3,5]
    public ListNode removeNthFromEnd(ListNode head, int n) {
        //预设指针
        ListNode pre=new ListNode(0,head);
        ListNode slow=pre;
        ListNode first=pre;
        //快指针先走n步
        while (first.next!=null){
            first=first.next;
            if (n==0){
                slow=slow.next;
            }else {
                n--;
            }
        }
        slow.next=slow.next.next;
        return pre.next;
    }
}

你可能感兴趣的:(19. 删除链表的倒数第 N 个结点)