【Leetcode解題】92. Reverse Linked List II
題目
解題概念
- 此題簡單來說,就是題目會指定
left和right,我們需要將介於第left個和第right個節點的所有節點反轉 - 而在實際執行上,我採用迴圈的方式 :
- 因為
left必 <=right,故先用reverseBetween()函數遞迴,將left移為欲反轉的第一個節點處 - 接著用
reverseN()函數遞迴反轉
- 因為
實際寫Code
- 目標函式 :
reverseBetween(head, left, right)- Input :
head: ListNode、left: int、right: int - Output :
ListNode
- Input :
- 主要程式碼 :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15succ = ListNode()
def reverseN(self, head, r):
if r == 1 :
self.succ = head.next
return head
last = self.reverseN(head.next, r-1)
head.next.next = head
head.next = self.succ
return last
def reverseBetween(self, head, left, right):
if left == 1:
return self.reverseN(head, right)
head.next = self.reverseBetween(head.next, left-1, right-1)
return head
本部落格所有文章除特別聲明外,均採用 CC BY-NC-SA 4.0 許可協議。轉載請註明來自 Robin's Tech Blog!


