反转部分单向链表
題目
給定一個單向鏈表的頭節點head,以及兩個整數from_和to,在單向鏈表上把第from_個節點到第to個節點這一部分進行反轉。?
例如:?
1 -> 2 -> 3 -> 4 -> 5 -> null,from_ = 2,to = 4?
調整結果為:1 -> 4 -> 3 -> 2 -> 5 -> null?
再如:?
1 -> 2 -> 3 -> null,from_?= 1,to?= 3?
調整結果為:3 -> 2 -> 1 -> null
要求:
時間復雜度O(N),空間復雜度O(1)?
如果不滿足1 <= from_?<= to?<= N,則不需要調整
基本思路:
? ? ? ?首先找到from_的上一個節點,記為fPre,to的下一個節點,記為tPos。將from~to的節點反轉,然后正確連接fPre和tPos即可。?
需要注意的是,如果fPre不存在,說明頭節點也在反轉的部分,此時返回新的頭節點,也就是反轉部分的最后一個節點;如果fPre存在,說明頭節點不在反轉的部分,返回head即可。
?
總結
- 上一篇: 删除链表的中间节点和a/b处的节点
- 下一篇: 两个单链表生成相加链表