您现在的位置是:首页 > 文章详情

19. 删除链表的倒数第N个节点

日期:2018-07-06点击:311

题目

给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。
示例:
给定一个链表: 1->2->3->4->5, 和 n = 2.
当删除了倒数第二个节点后,链表变为 1->2->3->5.
说明:
给定的 n 保证是有效的。
进阶:
你能尝试使用一趟扫描实现吗?

分析

链表的题目基本上都是优先考虑双指针。一个指针先走N步,然后两个指针同步移动到链表末尾,移除前一个指针所指着的节点即可。但是越简单的题目越要考虑边界条件,不要掉坑里面,具体看代码吧,争取一次Bugfree.

Code

/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */ class Solution { public ListNode removeNthFromEnd(ListNode head, int n) { ListNode right = head; ListNode left = head; for (int i = 0; i < n; i++) { right = right.next; } if (right == null) { head = head.next; return head; } while (right.next != null) { left = left.next; right = right.next; } left.next = left.next.next; return head; } }

作者信息:

码蹄疾,毕业于哈尔滨工业大学。
小米广告第三代广告引擎的设计者、开发者;
关注推荐、搜索、广告领域相关知识;

原文链接:https://yq.aliyun.com/articles/607378
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章