当前位置:网站首页>LeetCode 19:删除链表的倒数第 N 个结点
LeetCode 19:删除链表的倒数第 N 个结点
2022-08-03 23:50:00 【斯沃福德】
题目:
方法一:双指针
如果要删除倒数第n个节点,让fast移动n步,目的是拉开fast和slow之间的距离;
然后让fast和slow同时移动,直到fast指向链表末尾,此时slow就是要删除的节点!
最后fast为末尾节点的next即为null,slow就是要删除的节点node,而pre节点记录了node的前节点!
class Solution {
public ListNode removeNthFromEnd(ListNode head, int n) {
if(n<=0){
return head;
}
// 哨兵节点!
ListNode mer=new ListNode(-1);
mer.next=head;
ListNode fast=mer;
ListNode slow=mer;
//fast移动n次
for(int i=0;i<n;i++){
fast=fast.next;
}
ListNode pre=null;
while(fast!=null){
pre=slow;
// slow和fast一起移动,直到fast到末尾
slow=slow.next;
fast=fast.next;
}
// 删除
pre.next=slow.next;
return mer.next;
}
}
方法二:模拟
直接按情况分类计算;
排除k>size和k=size=1的特殊情况;
如果k=1且size>1,即删除最后一个节点;
如果k>1且k=size,即删除第一个,那么直接返回第二个节点即可;
而k>1且k<size时,将前驱节点指向要删除节点的next即完成删除;
class Solution {
public ListNode removeNthFromEnd(ListNode head, int k) {
Stack<ListNode> s=new Stack<>();
ListNode curr=head;
while(curr!=null){
s.push(curr);
curr=curr.next;
}
// base case
if(k>s.size() || k<=0){
return head;
}
if(k==1 && s.size()==1){
return null;
}
else if(k==1 && s.size()>1 ){
s.pop();
ListNode pre=s.pop();
pre.next=null;
}else if(k>1 && k==s.size()){
ListNode second=null;
for(int i=0;i<k-1;i++){
second=s.pop();
}
return second;
}else if(k>1 && k<s.size()){
ListNode front=null;
for(int i=0;i<k+1;i++){
front=s.pop(); // 前
}
front.next=front.next.next;
}
return head;
}
}
边栏推荐
猜你喜欢
智能管理PoE交换机
Jar a key generation document database
XSLT – 服务器端概述
689. 三个无重叠子数组的最大和
射频芯片ATE测试从入门到放弃之参数测试
【杂项】如何将指定字体装入电脑然后能在Office软件里使用该字体?
牛客2022 暑期多校3 H Hacker(SAM + 线段树查询区间内部最大子段和)
一文搞定 SQL Server 执行计划
Binary search tree to solve the fallen leaves problem
The world's first mass production, with the most fixed points!How does this AVP Tier1 lead?
随机推荐
LeetCode 0155. 最小栈
In V8 how arrays (with source code, picture and text easier to understand)
C语言实验十五 文件
【杂项】通过Excel为字符串产生条码
XSLT – 编辑 XML概述
现货白银需要注意八大事项
The super perfect layout has shortcut keys and background replacement
【MySQL —— 索引】
Use tf.image.resize() and tf.image.resize_with_pad() to resize images
A simple understanding of TCP, learn how to shake hands, wave hands and various states
1067 Sort with Swap(0, i)
设置工作模式与环境(下):探查和收集信息
【论文阅读】TRO 2021: Fail-Safe Motion Planning for Online Verification of Autonomous Vehicles Using Conve
Shell 用法梳理总结
Free自由协议系统开发
rosbridge-WSL2 && carla-win11
Walk the Maze BFS
YOLOv7改进之二十二:涨点神器——引入递归门控卷积(gnConv)
libnet
七夕活动浪漫上线,别让网络拖慢和小姐姐的开黑时间