解答
解题思路:同样也是快慢指针,只不过快指针提前走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 } |
我还是个菜鸟