每天一道题,赛过活神仙 —— 删除链表倒数n个数

110 阅读1分钟

题目

删除链表倒数第n个数

栗子如下:

输入: {val:1,next:{val:2,next:{val:3,next:{val:4,next:{val:5,next:null}}}}} 2
输出:{val:1,next:{val:2,next:{val:3,next:{val:5,next:null}}}}

案例如下:

/**
 * @param {ListNode} head
 * @param {number} n
 * @return {ListNode}
 * 1、利用空间换时间,利用数组存储
 * 2、两个指针,第一个指针走到n步,第二个指针开始走,当第一个指针走完,第二个指针就是倒数第n个数
 */
var removeNthFromEnd = function(head, n) {
    let re = [];
    while(head){
        re.push(head);
        head = head.next;
    }
    if(n == re.length){
        return re[1] || null;
    }else if(n == 1){
        re[re.length - 2].next = null;
        return re[0] || null;
    }else{
        re[re.length - n -1 ].next = re[re.length - n + 1];
        return re[0];
    }
};