题目描述

给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。

示例:

给定一个链表: 1->2->3->4->5, 和 n = 2.

当删除了倒数第二个节点后,链表变为 1->2->3->5.

说明:

给定的 n 保证是有效的。

代码实现

/**
 * Definition for singly-linked list.
 * function ListNode(val) {
 *     this.val = val;
 *     this.next = null;
 * }
 */
/**
 * @param {ListNode} head
 * @param {number} n
 * @return {ListNode}
 */
var removeNthFromEnd = function(head, n) {
    if(n <= 0)
      return head;
    let len = 0;
    let cur = head;
    while(cur !== null) {
      len++;
      cur = cur.next;
    }
  
    if(n > len)
      return head;
    
    let index = len-n;
    let newHead = new ListNode(null);
    newHead.next = head;
    cur = newHead;

    while(index !== 0) {
      index--;
      cur = cur.next;
    }
  
    cur.next = cur.next.next;
    return newHead.next;
};

耳东
766 声望51 粉丝

知乎专栏:[链接]