LeetCode 中等难度 92. 反转链表 II解题思路
92. 反轉(zhuǎn)鏈表 II
題目:中等難度
反轉(zhuǎn)從位置 m 到 n 的鏈表。請使用一趟掃描完成反轉(zhuǎn)。
說明:
1 ≤ m ≤ n ≤ 鏈表長度。
示例:
輸入: 1->2->3->4->5->NULL, m = 2, n = 4
輸出: 1->4->3->2->5->NULL
解題思路:
1.基礎(chǔ)首先是普通鏈表反轉(zhuǎn),也就是需要一個(gè)新鏈表頭指針new_head指向新鏈表的頭部,然后從舊鏈表里找到需要反轉(zhuǎn)的節(jié)點(diǎn)利用頭插法插入到新鏈表里。
2.著重點(diǎn)是找到需要反轉(zhuǎn)的節(jié)點(diǎn)------按位查找。
3.需要標(biāo)記舊鏈表里的四個(gè)特殊節(jié)點(diǎn),反轉(zhuǎn)完畢后連接成目標(biāo)鏈表。如下圖
4.把反轉(zhuǎn)后3里找到的四個(gè)節(jié)點(diǎn)重新鏈接即可。
總結(jié):主體框架是按位查找+鏈表反轉(zhuǎn)+重要位置節(jié)點(diǎn)的標(biāo)記
需要注意的幾個(gè)點(diǎn):
1.以上四個(gè)指針的初始賦值問題,第一個(gè)指針不能直接賦值head。因?yàn)槿绻鹠等于1時(shí),這個(gè)指針的值應(yīng)為Null。重點(diǎn)需要注意第一個(gè)指針是NULL的情況。
2.反轉(zhuǎn)時(shí)創(chuàng)建了新的鏈表,利用頭插法把舊鏈表的頭結(jié)點(diǎn)插到新鏈表時(shí),要提前用一個(gè)next指針標(biāo)記舊鏈表的下一個(gè)節(jié)點(diǎn),不然舊鏈表的頭結(jié)點(diǎn)斷開后就找不到新節(jié)點(diǎn)。
附上代碼:
總結(jié)
以上是生活随笔為你收集整理的LeetCode 中等难度 92. 反转链表 II解题思路的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: StringBuilder类与Strin
- 下一篇: leetcode 160 简单难度