校招刷题群
高效刷题 迎战校招
校招精选试题
近年面笔经面经群内分享
Java刷题群 前端刷题群 产品运营群
首页 > 算法 > 链表算法
题目

删除链表倒数第n个节点

解答

解题思路:同样也是快慢指针,只不过快指针提前走n+1步,还得判断一种特殊情况,就是n是不是和链表的长度相等

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
var removeList=function(head,n){
    let fast=head;
    let slot=head;
    while(--n){
        fast=fast.next; //先走n步
    }
    // 判断链表的长度是不是n,如果刚好走了n步,没有下一个节点,就删除第一个节点并返回
    if(!fast.next)return head.next
    // 如果不是,快指针就再走一步,比慢指针提前走n+1步
    fast=fast.next
    // 快慢指针一起前进
    while(fast&&fast.next){
        fast=fast.next
        slot=slot.next
    }
    slot.next=slot.next.next
    return head
  
}


C 1条回复 评论
拾柒

我还是个菜鸟

发表于 2023-07-06 23:00:00
0 0