Day3-链表

43 阅读1分钟

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

输入: head = [1,2,3,4,5], n = 2
输出: [1,2,3,5]

思路

  1. 首先把快的指针走n步
  2. 快的慢的一起走,走到链表尾部 快的走了(m - n) 慢的也走了(m - n)
  3. 这个时候就是倒数第n个 例如总长度是5 要删除倒数第二个 慢的就需要走 5 - 2 = 3步 这样就能指向要被删除的节点
var removeNthFromEnd = function(head, n) {
  let list = new ListNode(0, head)
  let p = list
  let m = list
  while(n--) {
      p = p.next
  }
  while (p.next) {
      m = m.next
      p = p.next
  }
  m.next = m.next.next
  return list.next
};