Partition List — Two Dummy Head Chains
Advertisement
Problem 223 · Partition List
Difficulty: Medium · Pattern: Two Dummy Heads
Rearrange list so all nodes < x come before nodes >= x, preserving relative order.
Solutions
# Python
def partition(head, x):
less = less_head = ListNode(0)
greater = greater_head = ListNode(0)
while head:
if head.val < x:
less.next = head; less = less.next
else:
greater.next = head; greater = greater.next
head = head.next
greater.next = None
less.next = greater_head.next
return less_head.next
// Java
public ListNode partition(ListNode head, int x) {
ListNode less = new ListNode(0), greater = new ListNode(0);
ListNode l = less, g = greater;
while (head != null) {
if (head.val < x) { l.next = head; l = l.next; }
else { g.next = head; g = g.next; }
head = head.next;
}
g.next = null; l.next = greater.next;
return less.next;
}
Complexity
- Time: O(n)
- Space: O(1)
Advertisement