Untitled

 avatar
unknown
plain_text
5 months ago
1.2 kB
7
Indexable
public class Solution {
    public ListNode sortLinkedList(ListNode head) {
        if (head == null || head.next == null) {
            return head;
        }
        
        ListNode zeroTail = new ListNode(0);
        ListNode oneTail = new ListNode(0);
        ListNode twoTail = new ListNode(0);
        
        ListNode zeroHead = zeroTail, oneHead = oneTail, twoHead = twoTail;
        
        // Partition the list into three separate lists
        ListNode current = head;
        while (current != null) {
            if (current.val == 0) {
                zeroTail.next = current;
                zeroTail = zeroTail.next;
            } else if (current.val == 1) {
                oneTail.next = current;
                oneTail = oneTail.next;
            } else {
                twoTail.next = current;
                twoTail = twoTail.next;
            }
            current = current.next;
        }
        
        // Connect the three lists
        zeroTail.next = (oneHead.next != null) ? oneHead.next : twoHead.next;
        oneTail.next = twoHead.next;
        twoTail.next = null;
        
        return zeroHead.next;
    }
}
Editor is loading...
Leave a Comment