Skip to content

力扣链接:19.删除链表

难度:⭐⭐

解题关键词:链表双指针

解题思路:使用双指针,慢指针和快指针相差 n,最后将慢指针的 next 指向 next.next。

typescript
function removeNthFromEnd(head: ListNode | null, n: number): ListNode | null {
  if (head === null) return head;

  const preHead = new ListNode(0, head);

  let prev = preHead;
  let cur = head;

  // 将节点向前移动 n
  for (let i = 0; i < n; i++) {
    cur = cur.next;
  }

  while (cur) {
    prev = prev.next;
    cur = cur.next;
  }

  prev.next = prev.next.next;

  return preHead.next;
}