您的位置:首页 > 其它

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

2017-07-11 08:15 260 查看
给定一个链表,删除链表中倒数第n个节点,返回链表的头节点。


 注意事项


链表中的节点个数大于等于n

您在真实的面试中是否遇到过这个题? 

Yes

样例

给出链表1->2->3->4->5->null和 n = 2.
删除倒数第二个节点之后,这个链表将变成1->2->3->5->null.

挑战 

O(n)时间复杂度

ListNode removeNthFromEnd(ListNode head, int n) {
if (head == null) return head;
ListNode head1 = head, p = null, pre = null;
int cnt = 0;
p = head;
while (p != null) {
cnt++;
p = p.next;
}
int delN = cnt - n;
cnt = 0;
p = head;
while (p != null && cnt < delN) {
cnt++;
pre = p;
p = p.next;
}
if (pre == null) {
head1 = p.next;
} else {
pre.next = p.next;
}
return head1;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  链表