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

2021-12-23 18:44:53 浏览数 (1)

思路:

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

代码:

代码语言:javascript复制
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 last=pre;
        ListNode first=pre;
        //快指针先走n步
        while (first.next!=null){
            first=first.next;
            if (n==0){
                last=last.next;
            }else {
                n--;
            }
        }
        last.next=last.next.next;
        return pre.next;
    }
}

0 人点赞