Saturday, June 7, 2014

Leetcode (Python): Partition List

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 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