点击此处返回总目录

 

【题目】

19 删除链表的倒数第n个结点

 

【分析】

最简单的方法就是遍历一趟,求出总长度,然后计算一下要删掉第几个结点。然后第二趟删除即可。

这种方法太简单,不写了。我们来说一下一趟扫描的写法。

设置快慢指针。快指针首先走n个结点,然后一起走。当快指针走到最后一个的时候,慢指针刚好走到倒数第(n-1)个。

 

【代码】

19 删除链表的倒数第n个结点

 

需要注意的是,第19行这里。

如果q=null,说明走了n步之后走到了结尾的后一个元素。比如, 1->2->3->4->5。n=5时,刚好走到null。说明要删除的就是第一个元素。故返回head.next即可。

 

 

【结果】

19 删除链表的倒数第n个结点

 

 

 

 

 

相关文章: