Tuesday, March 6, 2018

98 Sort List

if (head == null || head.next == null) {
            return head;
        }
        
        ListNode lessDummy = new ListNode(0);
        ListNode less = lessDummy;
        ListNode greaterDummy = new ListNode(0);
        ListNode greater = greaterDummy;
        ListNode equal = head;
        ListNode curr = head.next;
        while (curr != null) {
            if (curr.val < head.val) {
                less.next = curr;
                less = less.next;
            }
            else if (curr.val > head.val) {
                greater.next = curr;
                greater = greater.next;
            }
            else { // curr.val == head.val
                equal.next = curr;
                equal = equal.next;
            }
            curr = curr.next;
        }
        less.next = null;
        greater.next = null;
        equal.next = null;
        
        lessDummy.next = sortList(lessDummy.next);
        greaterDummy.next = sortList(greaterDummy.next);
        
        ListNode dummy = lessDummy;
        curr = dummy;
        while (curr.next != null) {
            curr = curr.next;
        }
        curr.next = head;
        equal.next = greaterDummy.next;
        
        return dummy.next;

No comments:

Post a Comment

4. Ugly Number

1*2(t2) 2*2 3*2 (t3)1*3 2*3 3*3 (t5)1*5 2*5 3*5 1*2 2*2(t2) 3*2 1*3(t3) 2*3 3*3 (t5)1*5 2*5 3*5 Solution: public int nthUglyNumbe...