reorder it to: L0→Ln→L1→Ln-1→L2→Ln-2→…
You must do this in-place without altering the nodes' values.
For example,
Given
{1,2,3,4}
, reorder it to {1,4,2,3}
.
Solution:
# Definition for singly-linked list. # class ListNode: # def __init__(self, x): # self.val = x # self.next = None class Solution: # @param head, a ListNode # @return nothing def reorderList(self, head): if head == None: return head stack = [] temp = head while temp != None: stack.append(temp) temp = temp.next list = head fromHead = head fromStack = True while (fromStack and list != stack[-1]) or ( not fromStack and list != fromHead): if fromStack: fromHead = fromHead.next list.next = stack.pop() fromStack = False else: list.next = fromHead fromStack = True list = list.next list.next = None
No comments :
Post a Comment