Given the head of a singly linked list and two integers, reverse the nodes of the list from position left to position right.
E.g: reverseBetween(head, 2, 4)
1 -> 2 -> 3 -> 4 -> 5
1 -> 4 -> 3 -> 2 -> 5
class Solution: def reverse(self, head, steps): tmp = head prev = None tail = head i = 0 while tmp and i < steps: current = tmp n = current.next current.next = prev prev = current tmp = n i+=1 head = current tail.next =n t = head return head def reverseBetween(self, head: ListNode, left: int, right: int) -> ListNode: tmp=head j = 1 prev = None if right -left ==0: return head while tmp and j < left: prev = tmp tmp=tmp.next j =j+1 a = self.reverse(tmp, right+1 - left) if not prev: return a prev.next = a return head
Time complexity: O(n)
Space complexity: 1