
#Leetcode# 92. Reverse Linked List II
发布日期:2025-03-29 02:45:49
浏览次数:9
分类:精选文章
本文共 1887 字,大约阅读时间需要 6 分钟。
为了优化给定的链表反转代码,从位置m到n进行反转,可以使用双指针法高效地完成任务。以下是优化后的步骤解析:
步骤:
确定反转的子链表范围:
- 找到从节点m开始到节点n结束的部分,即为需要反转的子链表。
引入辅助指针:
- 使用
slow_ptr
从链表头开始,移动到节点m的位置。 - 使用
fast_ptr
从节点n的位置开始,移动到链表末尾。
移动慢指针到节点m:
- 逐步移动
slow_ptr
,直到它指向节点m的位置。
调整快指针位置:
fast_ptr
从节点n开始,移动到链表末尾,确保它没有超出子链表的范围。
反转子链表:
- 当
slow_ptr
到达节点m,保持fast_ptr
在子链表末尾,逐步反转子链表。 - 例如,将子链表从m到n反转为n到m。
连接反转后的子链表:
- 断开链表中的节点,从m到n,插入反转后的子链表,使链表结构保持完整。
处理剩余部分:
- 恢复前驱和后驱节点的指针,确保链表中的其他部分不受影响。
以下是优化后的代码:
class Solution {public: ListNode* reverseBetween(ListNode* head, int m, int n) { if (!head || m <= 0 || n >= m || n >= head->next) return head; int num = m - 1; dummy = new ListNode(-1); dummy->next = head; ListNode* slow = head; n -= m; while (m--) { slow = slow->next; } ListNode* cur = slow; while (n--) { cur = cur->next; } em *end = cur->next; cur->next = NULL; *slow_ptr = reverseList(slow); ptr fast = slow_ptr; while (fast->next) { fast = fast->next; } fast->next = end; while (num--) { st = st->next; } st->next = slow_ptr; return dummy->next->next; } ListNode* reverseList(ListNode* c) { if (!c || !c->next) return c; return reverseList(c->next); } static struct Node { int val; struct Node *next; explicit Node(int v) : val(v), next(nullptr) {} };}
步骤说明:
初始化辅助指针:
- 创建
dummy
节点作为起始点,便于处理边界问题。dummy->next = head
确保链表的整体结构。
移动slow_ptr
到节点m:
- 使用循环,从链表头开始移动
slow_ptr
到节点m的位置。
调整fast_ptr
到节点n的位置:
- 使用另一个指针
fast_ptr
,从节点n开始移动到链表的末尾。然后,逐步内部反转子链表。
反转子链表:
- 逐步反转子链表,从节点m到节点n,利用递归或内置函数
reverseList
完成。
连结逆转后的子链表:
- 将反转后的子链表重新连接到原始链表中,确保整体结构的连贯性。
恢复余下部分的指针:
- 逐步将
dummy
节点后的节点指向反转后的子链表,确保链表的路线正确。
注意事项:
- 确保从m到n的节点被正确反转,且链表其他部分不受影响。
- 在链表长度较小时,需要特殊处理避免错误访问节点。
通过以上步骤,可以在一次链表遍历中高效地实现反转操作,避免额外的空间复杂度,确保代码简洁且高效执行。
发表评论
最新留言
不错!
[***.144.177.141]2025年04月27日 01时03分52秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
2024年最流行的十大开源渗透测试工具
2023-01-24
005从零开始学Python—字符串处理
2023-01-24
2024年网络安全八大前沿趋势,零基础入门到精通,收藏这篇就够了
2023-01-24
2024年薪酬最高的五个网络安全职位,零基础入门到精通,收藏这一篇就够
2023-01-24
2024年非科班的人合适转行做程序员吗?
2023-01-24
2024数字安全创新性案例报告,从零基础到精通,收藏这篇就够了!
2023-01-24
2024最新最全CTF入门指南(非常详细)零基础入门到精通,收藏这一篇就够了
2023-01-24
2024最新科普什么是大模型?零基础入门到精通,收藏这篇就够了
2023-01-24
2024最新程序员接活儿搞钱平台盘点
2023-01-24
2024最火专业解读:信息安全(非常详细)零基础入门到精通,收藏这一篇就够了
2023-01-24
(插播)unity的 异常捕捉和 ios Android 崩溃信息的捕捉。
2023-01-24
2024版最新SRC漏洞挖掘思路手法(非常详细),零基础入门到精通,收藏这一篇就够了
2023-01-24
2024版最新渗透测试零基础入门教程,带你入门到精通(超详细),收藏这篇就够了
2023-01-24
2024版最新网络安全入门必备读书清单(非常详细)零基础入门到精通,收藏这一篇就够了
2023-01-24
2024版最新网络安全工程师考证指南,零基础入门到精通,收藏这篇就够了
2023-01-24
2024版最新网络安全教程从入门到精通,看完这一篇就够了
2023-01-24