BM9 删除链表的倒数第n个节点

alt

/*
 * function ListNode(x){
 *   this.val = x;
 *   this.next = null;
 * }
 */

/**
 *
 * @param head ListNode类
 * @param n int整型
 * @return ListNode类
 */
function removeNthFromEnd(head, n) {
  // write code here
  let end = head;
  //   查找到第 n 个并记录
  for (let i = 0; i < n; i++) {
    end = end.next;
  }
  if (!end) return head.next;

  //   通过 start 和 end 右移动到 end.next 为结尾,此时的 start 就是倒数第 n 个
  //   退出循环后让新链表的该位置的 next 设为 next.next
  let start = head;
  while (end.next) {
    end = end.next;
    start = start.next;
  }
  start.next = start.next.next;
  return head;
}
module.exports = {
  removeNthFromEnd: removeNthFromEnd,
};

如有问题望指正