Partition List — Two Dummy Head Chains

Sanjeev SharmaSanjeev Sharma
1 min read

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

Sanjeev Sharma

Written by

Sanjeev Sharma

Full Stack Engineer · E-mopro