/*
給你單鏈表的頭指針 head 和兩個整數 left 和 right ,其中 left <= right 。請你反轉從位置 left 到位置 right 的鏈表節點,返回 反轉後的鏈表 。
*/
前置知識: lc0206 反轉鏈表
Lc0092這題的的思路和206題的反轉鏈表一樣,難在操作。
先貼代碼
拿上示例,來看圖解
1、首先是拼接上dummy,最終返回dummy.next。(這是常規操作)
2、第一個for循環,讓temp從dummy位置出發,移動到left位置的上一個節點
注意,此後temp的位置沒有移動,temp很長一段時間內指向也沒有變(1 -> 2)。
3、第二個for循環,操作prev和cur,一邊移動位置,一邊反轉節點指向。
其中指向改變了(right - left)次,第二個for循環終點時prev處於right位置,cur處於right.next位置。
第二個for循環完成之後鏈表中各個節點的指向是下面這樣的
4、重新畫一下圖,看一下現在的鏈表指向
5、temp.next.next = cur
6、temp.next = prev
已經反轉完成了
返回dummy.next,完結。
同步更新到自己的語雀
https://www.yuque.com/dirackeeko/tfpe21/fsp29dvd4k9yvvpi