Given a linked list and a value x, partition it such that all nodes less than x come before nodes greater than or equal to x.
You should preserve the original relative order of the nodes in each of the two partitions.
For example,
Given
return
Given
1->4->3->2->5->2 and x = 3,return
1->2->2->4->3->5.Solution:
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
# @param head, a ListNode
# @param x, an integer
# @return a ListNode
def partition(self, head, x):
begSmaller = ListNode(0)
endSmaller = begSmaller
begLarger = ListNode(0)
endLarger = begLarger
pointer = head
while pointer != None:
if pointer.val <x:
endSmaller.next = pointer
endSmaller = pointer
else:
endLarger.next = pointer
endLarger = pointer
pointer = pointer.next
endSmaller.next = begLarger.next
endLarger.next = None
return begSmaller.next
No comments :
Post a Comment