Leetcode刷题100天—19. 删除链表的倒数第 N 个结点(双指针)—day21
Posted 神的孩子都在歌唱
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Leetcode刷题100天—19. 删除链表的倒数第 N 个结点(双指针)—day21相关的知识,希望对你有一定的参考价值。
前言:
作者:神的孩子在歌唱
大家好,我叫运智
19. 删除链表的倒数第 N 个结点
难度中等1529收藏分享切换为英文接收动态反馈
给你一个链表,删除链表的倒数第 n
个结点,并且返回链表的头结点。
**进阶:**你能尝试使用一趟扫描实现吗?
示例 1:
输入:head = [1,2,3,4,5], n = 2
输出:[1,2,3,5]
示例 2:
输入:head = [1], n = 1
输出:[]
示例 3:
输入:head = [1,2], n = 1
输出:[1]
提示:
- 链表中结点的数目为
sz
1 <= sz <= 30
0 <= Node.val <= 100
1 <= n <= sz
package 双指针;
public class _19_删除链表的倒数第N个结点 {
// 通过双指针,首先遍历到第n个数,然后在创建另一个指针从这第n数开始遍历就能找到他的倒数
public ListNode removeNthFromEnd(ListNode head, int n) {
// 解析案列:1-2-3-4-5 n=2
// 创建一个新链表
ListNode ret=new ListNode(0,null);
// 创建新指针指向head和ret
ListNode first=head;//指向1
ret.next=head;//null-1-2-3-4-5
ListNode second=ret;//指向null
// 先循环到第n个数
for(int i=0;i<n;i++) {
first=first.next;
}
// first遍历完后指向3
// 如果first为null循环结束
while(first!=null) {
// 遍历ret链表从first开始
second=second.next;
first=first.next;
}
// 循环完后second指向3,这里遍历了三次
second.next=second.next.next;//最后在用3指向5
return ret.next;
}
}
本人csdn博客:https://blog.csdn.net/weixin_46654114
转载说明:跟我说明,务必注明来源,附带本人博客连接。
以上是关于Leetcode刷题100天—19. 删除链表的倒数第 N 个结点(双指针)—day21的主要内容,如果未能解决你的问题,请参考以下文章
Leetcode刷题100天—83. 删除排序链表中的重复元素(链表)—day03
Leetcode刷题100天—83. 删除排序链表中的重复元素(链表)—day03
Leetcode刷题100天—203. 移除链表元素(链表)—day02
Leetcode刷题100天—203. 移除链表元素(链表)—day02