题解 | #删除链表的倒数第n个节点#

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

http://www.nowcoder.com/practice/f95dcdafbde44b22a6d741baf71653f6

for(int i = 1; i < n + 1; i++) { tail = tail.next; }

if(tail == null) { return head.next; }

因为删除倒数第 n 个节点必须找到倒数第 n - 1 个节点,所以对于该题,删除第一个节点是一个特殊情况,因为第一个节点没有前驱节点。 注意解答代码中的上面这段代码,可以将删除第一个元素的特殊情况直接解决掉。假如要删除的是第一个节点,那么 tail 指针会直接走到链表的表尾的 null,在该题中也只有在删除第一个节点时候 tail 会跑到最后的 null,所以可以据此判断删除的是否是第一个节点,从而针对性处理。因为给的参数 n 代表的是要删除的倒数第 n 个节点,如果直接推断是否删除的是头一个节点需要遍历出链表长度,这样代码会平均下来多遍历一次链表,运行时间会拉长很多。

全部评论

相关推荐

不愿透露姓名的神秘牛友
07-01 11:47
点赞 评论 收藏
分享
07-03 11:02
中山大学 C++
字节刚oc,但距离九月秋招很近了有两段互联网实习,非腾讯字节。不敢赌转正,现在在纠结去还是不去如果实习俩月离职会有什么后果吗
阿城我会做到的:不去后悔一辈子,能否转正取决于ld的态度,只要他不卡,答辩就是走流程,个人觉得可以冲一把
投递字节跳动等公司9个岗位
点赞 评论 收藏
分享
陆续:不可思议 竟然没那就话 那就我来吧 :你是我在牛客见到的最美的女孩
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务