删除链表的倒数第n个节点(双指针)

给定一个链表,删除链表的倒数第n个节点并返回链表的头指针
例如,
给出的链表为:1->2->3->4->5, n= 2.
删除了链表的倒数第n个节点之后,链表变为1->2->3->5.
备注:
题目保证n一定是有效的
请给出请给出时间复杂度为\ O(n) O(n)的算法

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

/**
  * 
  * @param head ListNode类 
  * @param n int整型 
  * @return ListNode类
  */
function removeNthFromEnd( head ,  n ) {
    // write code here
    if(head.next == null || head == null) {
        head = null
        return head
    }
    var top = {}
    top.next = head
    var cur1 = top
    var cur2 = top
    while(n){
        cur2 = cur2.next
        n--
    }
    while(cur2.next){
        cur1 = cur1.next
        cur2 = cur2.next
    }
    cur1.next = cur1.next.next
    return top.next
}
module.exports = {
    removeNthFromEnd : removeNthFromEnd
};
链表算法 文章被收录于专栏

链表相关算法

全部评论

相关推荐

11-08 16:53
门头沟学院 C++
投票
滑模小马达:第三个如果是qfqc感觉还行,我签的qfkj搞电机的,违约金也很高,但公司感觉还可以,听说之前开过一个试用转正的应届生,仅供参考。
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务