LeetCode 中等难度 92. 反转链表 II解题思路
生活随笔
收集整理的这篇文章主要介绍了
LeetCode 中等难度 92. 反转链表 II解题思路
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
92. 反转链表 II
题目:中等难度
反转从位置 m 到 n 的链表。请使用一趟扫描完成反转。
说明:
1 ≤ m ≤ n ≤ 链表长度。
示例:
输入: 1->2->3->4->5->NULL, m = 2, n = 4
输出: 1->4->3->2->5->NULL
解题思路:
1.基础首先是普通链表反转,也就是需要一个新链表头指针new_head指向新链表的头部,然后从旧链表里找到需要反转的节点利用头插法插入到新链表里。
2.着重点是找到需要反转的节点------按位查找。
3.需要标记旧链表里的四个特殊节点,反转完毕后连接成目标链表。如下图
4.把反转后3里找到的四个节点重新链接即可。
总结:主体框架是按位查找+链表反转+重要位置节点的标记
需要注意的几个点:
1.以上四个指针的初始赋值问题,第一个指针不能直接赋值head。因为如果m等于1时,这个指针的值应为Null。重点需要注意第一个指针是NULL的情况。
2.反转时创建了新的链表,利用头插法把旧链表的头结点插到新链表时,要提前用一个next指针标记旧链表的下一个节点,不然旧链表的头结点断开后就找不到新节点。
附上代码:
总结
以上是生活随笔为你收集整理的LeetCode 中等难度 92. 反转链表 II解题思路的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: StringBuilder类与Strin
- 下一篇: leetcode 160 简单难度