leetcode19-删除链表的第n结点

leetcode 19
leetcode19-删除链表的第n结点_第1张图片

思路

要删除倒数第n个元素,那么就要找到倒数第n+1个元素,那么我们需要两个指针来记录,首先快指针需要先走n+1步,然后快慢指针一起进行移动,直到快指针为null的时候,此时慢指针恰好走到倒数第n+1个元素,这时候再设置slow.next = slow.next.next即实现了删除操作

实现

var removeNthFromEnd = function(head, n) {
    const dummy = {val:0,next:head};
    let slow = dummy,fast = dummy;
    // 先移动快指针n+1步
    while(fast && n + 1){
        fast = fast.next;
        n--
    }
    while(fast){
        fast = fast.next;
        slow = slow.next;
    }
    slow.next = slow.next.next;
    return dummy.next;
};

你可能感兴趣的:(算法小课堂,链表,数据结构,leetcode,算法)