leetcode19. 删除链表的倒数第N个节点
【摘要】 给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。
示例:
给定一个链表: 1->2->3->4->5, 和 n = 2.
当删除了倒数第二个节点后,链表变为 1->2->3->5. 说明:
给定的 n 保证是有效的。
进阶:
你能尝试使用一趟扫描实现吗?
分析:一个指针先走...
给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。
示例:
给定一个链表: 1->2->3->4->5, 和 n = 2.
当删除了倒数第二个节点后,链表变为 1->2->3->5.
说明:
给定的 n 保证是有效的。
进阶:
你能尝试使用一趟扫描实现吗?
分析:一个指针先走k+1次,然后和另一个kNode指针一起往后走,最后删除kNode.next即可。
注意i:判空(k==链表长度的情况,走k+1次会空指针)
-
/**
-
* 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 temp=head;
-
ListNode kNode=head;
-
while(n-->0)temp=temp.next;
-
//为了解决删除第一个节点的情况会空指针异常
-
if(temp==null){
-
return head.next;
-
}else{
-
temp=temp.next;
-
}
-
while(temp!=null){
-
kNode=kNode.next;
-
temp=temp.next;
-
}
-
kNode.next=kNode.next.next;
-
return head;
-
}
-
}

文章来源: fantianzuo.blog.csdn.net,作者:兔老大RabbitMQ,版权归原作者所有,如需转载,请联系作者。
原文链接:fantianzuo.blog.csdn.net/article/details/103239628
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)