题解 | #删除链表的倒数第n个节点#

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

http://www.nowcoder.com/practice/f95dcdafbde44b22a6d741baf71653f6

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

/**
  * 
  * @param head ListNode类 
  * @param n int整型 
  * @return ListNode类
  */
function removeNthFromEnd( head ,  n ) {
    // write code here
//   n=n+1
  var cur = head
  var fast = head
  // 快指针相差k个
  while(n>0){
    fast=fast.next
    n--
  }
  //删除个数等于链表长度的情况//即啥删除第一个数//fast==null
  if(!fast) return head.next
  // 快指针走到头的时候, 慢指针就是当前到倒数第n个节点
  while(fast.next){
    cur=cur.next
    fast=fast.next
  }
  cur.next = cur.next.next
  return head
}
module.exports = {
    removeNthFromEnd : removeNthFromEnd
};

本题与上一个题返回后K个节点类似, 只是多了一个删除的操作.
删除: cur.next=cur.next.next
需要注意处理n=链表长度的情况 if(fast===null)return head.next

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务