92. Reverse Linked List II
Reverse a linked list from position m to n. Do it in one-pass.
Note: 1 ≤ m ≤ n ≤ length of list.
Example:
Input: 1->2->3->4->5->NULL, m = 2, n = 4
Output: 1->4->3->2->5->NULL
Code:
# Definition for singly-linked list.
# class ListNode(object):
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution(object):
def reverseBetween(self, head, m, n):
dummy = ListNode(0)
dummy.next = head
cur, prev = head, dummy
for _ in range(m - 1):
cur = cur.next
prev = prev.next
for _ in range(n - m):
temp = cur.next
cur.next = temp.next
temp.next = prev.next
prev.next = temp
return dummy.next