1 class Solution: 2 def constructLink(self,lists): 3 n = len(lists) 4 if n == 0: 5 return None 6 if n == 1: 7 return ListNode(lists[0]) 8 9 head = ListNode(lists[-1]) 10 for i in range(n-2,-1,-1): 11 cur = ListNode(lists[i]) 12 cur.next = head 13 head = cur 14 return head 15 16 def reverseBetween(self, head: ListNode, m: int, n: int) -> ListNode: 17 lists = [] 18 if m == n: 19 return head 20 while head != None: 21 lists.append(head.val) 22 head = head.next 23 reorder = [] 24 if m == 1: 25 reorder = lists[n-1::-1] + lists[n:] 26 else: 27 reorder = lists[:m-1] + lists[n-1:m-2:-1] + lists[n:] 28 return self.constructLink(reorder)