已解决
快慢指针删除链表的第N个元素——力扣19
来自网友在路上 146846提问 提问时间:2023-10-27 18:26:15阅读次数: 46
最佳答案 问答题库468位专家为你答疑解惑
给你一个链表,删除链表的倒数第 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]
分析:
想要删除倒数第n个节点,我们必须找到倒数第n+1个节点,即倒数第n节点的前驱节点
思路 :
创建两个指针 fast和slow,让fast指针先走n+1步,然后slow和fast一起移动,然后当fast移动到最后一个节点时,slow此时指到倒数n+1节点,此时便可以执行删除操作
public ListNode removeNthFromEnd(ListNode head, int n) {if(head==null){return null;}ListNode duty=new ListNode(0);duty.next=head;ListNode fast=duty; ListNode slow=duty;for(int i=0;i<=n;i++){fast=fast.next;}while(fast!=null){fast=fast.next;slow=slow.next;}slow.next=slow.next.next;return duty.next;}
之所以new一个duty让他的后继节点指向head,是因为有可能存在head节点被删除的情况,此时如果直接返回head会出现指针指空的问题,返回duty.next可以有效解决空指针问题
查看全文
99%的人还看了
相似问题
- 〖大前端 - 基础入门三大核心之JS篇㊲〗- DOM改变元素节点的css样式、HTML属性
- Java 算法篇-链表的经典算法:判断回文链表、判断环链表与寻找环入口节点(“龟兔赛跑“算法实现)
- 代码随想录二刷 | 链表 | 删除链表的倒数第N个节点
- 节点导纳矩阵
- bhosts 显示节点 “unreach“ 状态
- 电子电器架构 —— 车载网关边缘节点总线转换
- 〖大前端 - 基础入门三大核心之JS篇㊳〗- DOM访问元素节点
- 第四天||24. 两两交换链表中的节点 ● 19.删除链表的倒数第N个节点 ● 面试题 02.07. 链表相交 ● 142.环形链表II
- CS224W5.1——消息传递和节点分类
- Vue报错解决Error in v-on handler: “Error: 无效的节点选择器:#div1“
猜你感兴趣
版权申明
本文"快慢指针删除链表的第N个元素——力扣19":http://eshow365.cn/6-26218-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!