【刷算法】LeetCode.19-删除链表的倒数第N个节点

问题形貌

给定一个链表,删除链表的倒数第 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;
};
    原文作者:亚古
    原文地址: https://segmentfault.com/a/1190000016222843
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞