【题目】
【分析】 最简单的方法就是遍历一趟,求出总长度,然后计算一下要删掉第几个结点。然后第二趟删除即可。 这种方法太简单,不写了。我们来说一下一趟扫描的写法。 设置快慢指针。快指针首先走n个结点,然后一起走。当快指针走到最后一个的时候,慢指针刚好走到倒数第(n-1)个。
【代码】
需要注意的是,第19行这里。 如果q=null,说明走了n步之后走到了结尾的后一个元素。比如, 1->2->3->4->5。n=5时,刚好走到null。说明要删除的就是第一个元素。故返回head.next即可。
【结果】
|