Skip to content
文档章节

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

描述

给定一个链表,删除链表的倒数第 n 个节点并返回链表的头指针例如,

给出的链表为: 1→2→3→4→5, n= 2n=2.删除了链表的倒数第 nn 个节点之后,链表变为1→2→3→5.

数据范围: 链表长度  10000≤n≤1000,链表中任意节点的值满足 1000≤val≤100

要求:空间复杂度 O(1)O(1),时间复杂度 O(n)O(n)备注:

题目保证 nn 一定是有效的

示例1

输入:

bash
输入:{1,2},2
返回值:{2}

代码

js
/*class ListNode {
 *     val: number
 *     next: ListNode | null
 *     constructor(val?: number, next?: ListNode | null) {
 *         this.val = (val===undefined ? 0 : val)
 *         this.next = (next===undefined ? null : next)
 *     }
 * }
 */

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 * 
 * @param head ListNode类 
 * @param n int整型 
 * @return ListNode类
 */
export function removeNthFromEnd(head: ListNode, n: number): ListNode {
    // write code here
    
    var temparr = [];
    var headnode = new ListNode();
    headnode.next = head;
    
    while(head) {
        temparr.push(head)
        head = head.next;
    }
    
    var len = temparr.length;
//     数组数目小于删除位数
    if(len === n) {
        headnode.next = temparr[0]?.next;
    } else  if(len >= n+1) {
       temparr[len -(n+1)].next = temparr[len -n]?.next;
    }   
    
    return headnode.next;
}