剑指 Offer II 021. 删除链表的倒数第 n 个结点

69 阅读1分钟

剑指 Offer II 021. 删除链表的倒数第 n 个结点

快慢指针法,先快指针跑上n步,然后让慢指针和快指针一起跑,跑到倒数第n-1项,让 slow.next = slow.next.next

var removeNthFromEnd = function (head, n) {
  var pre = {
    next: head,
  };
  var fast = head;
  while (n--) {
    fast = fast.next;
  }
  var slow = pre;
  while (fast) {
    fast = fast.next;
    slow = slow.next;
  }
  slow.next = slow.next.next;
  return pre.next;
};

流程图如下

image.png