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