1. 题目
https://leetcode.cn/problems/remove-nth-node-from-end-of-list/
2. 解法
- 这道题的目标是删除链表中倒数第n个节点,例如,给定链表1->2->3->4->5和n=2,要求删除倒数第二个节点,即4,返回1->2->3->5。
这道题的解题思路:
- 我们可以使用两个指针来遍历链表,一个快指针和一个慢指针。快指针先走n步,然后快指针和慢指针同时向后移动,直到快指针到达链表尾部。此时,慢指针的下一个节点就是要删除的节点。
- 为了方便处理边界情况,我们可以使用一个虚拟头结点来连接原始链表。虚拟头结点的作用是在链表前面添加一个空节点,这样我们就不用担心删除的节点是第一个节点的情况。
- 我们可以通过修改慢指针的next指针来删除该节点。具体来说,我们让慢指针的next指针指向它的下下个节点,即跳过要删除的节点。这样就完成了删除操作。
- 最后,我们返回虚拟头结点的下一个节点,即原始链表的第一个节点,作为结果。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | public class Solution { public ListNode removeNthFromEnd(ListNode head, int n) { if (head == null ) return null ; ListNode dummy = new ListNode( 0 ); dummy.next = head; ListNode fast = dummy; ListNode slow = dummy; for ( int i = 0 ; i < n; i++) { fast = fast.next; } while (fast.next != null ) { fast = fast.next; slow = slow.next; } slow.next = slow.next.next; return dummy.next; } } |
3. 总结
分类:
算法
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)