力扣链接: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;
}