AlgoMaster Logo

Partition List

values=[1, 4, 3, 2, 5, 2],x=3
1public ListNode partition(ListNode head, int x) {
2    ListNode lessHead = new ListNode(0);
3    ListNode greaterHead = new ListNode(0);
4
5    ListNode less = lessHead;
6    ListNode greater = greaterHead;
7
8    // Partition list into less and greater lists
9    while (head != null) {
10        if (head.val < x) {
11            // Append to less list
12            less.next = head;
13            less = less.next;
14        } else {
15            // Append to greater list
16            greater.next = head;
17            greater = greater.next;
18        }
19        head = head.next;
20    }
21
22    // Important: break any existing pointers to ensure no cycles
23    greater.next = null;
24    less.next = greaterHead.next;
25
26    return lessHead.next;
27}
0 / 16
143252