Reverse a linked list from position m to n. Do it in-place and in one-pass.

For example:

Given 1->2->3->4->5->NULL, m = 2 and n = 4,

return 1->4->3->2->5->NULL.

class Solution(object):
    def reverseBetween(self, head, m, n):
        dummy = reverse_head = ListNode(None)
        dummy.next = head

        for i in range(m-1):
            reverse_head = reverse_head.next

        reverse_tail = reverse_head.next
        for i in range(n-m):
            head_next = reverse_head.next
            tail_next = reverse_tail.next
            reverse_head.next = tail_next
            reverse_tail.next = tail_next.next
            tail_next.next = head_next

        return dummy.next

refer: clean python solution

results matching ""

    No results matching ""