Skip to content

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

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

代码

javascript
// 19. 删除链表的倒数第 N 个结点:https://leetcode.cn/problems/remove-nth-node-from-end-of-list/description/
// 输入:head = [1,2,3,4,5], n = 2
// 输出:[1,2,3,5]

import { ListNodeJs } from "../../utilsJs"

export function removeNthFromEnd(head, n) {
  let newHead = new ListNodeJs(0, head)
  let right = newHead
  let left = newHead
  while (right?.next) {
    right = right.next
    if (n <= 0) {
      left = left.next
    }
    n--
  }
  left.next = left?.next?.next
  return newHead.next
}
typescript
// 19. 删除链表的倒数第 N 个结点:https://leetcode.cn/problems/remove-nth-node-from-end-of-list/description/
// 输入:head = [1,2,3,4,5], n = 2
// 输出:[1,2,3,5]

import { ListNode } from "../../utils"

export function removeNthFromEnd(head: ListNode | null, n: number): ListNode | null {
  let newHead = new ListNode(0, head)
  let right = newHead
  let left = newHead
  while (right?.next) {
    right = right.next
    if (n <= 0) {
      left = left.next as ListNode
    }
    n--
  }
  left.next = left?.next?.next as ListNode
  return newHead.next
}