Sort List

来源:互联网 发布:焦作淘宝实体店地 编辑:程序博客网 时间:2024/06/14 23:31

题目

Sort a linked list in O(n log n) time using constant space complexity.

方法

public static int sum = 0;/** * Definition for singly-linked list. * Sort a linked list in O(n log n) time using constant space complexity. */    public ListNode sortList(ListNode head) {    ListNode top = new ListNode(0);    top.next = head;        quickSort(top,null);        return top.next;    }            private void quickSort(ListNode top, ListNode end) {        ListNode priorStart = top.next;    ListNode priorEnd = top.next;    if (priorStart != end && priorStart.next != end ) {    ListNode forward = priorStart;    ListNode backward = priorStart;    ListNode help = priorStart.next;            while (help != end) {    ListNode cur = help;    help = cur.next;    if (cur.val > priorStart.val) {backward.next = cur;backward = cur;} else if (cur.val < priorStart.val){cur.next = forward;forward = cur;}  else {if (backward == priorEnd) {backward.next = cur;priorEnd.next = cur;backward = cur;priorEnd = cur;} else {ListNode temp = priorEnd.next;cur.next = temp;priorEnd.next = cur;priorEnd = cur;}}    }    top.next = forward;    backward.next = end;    quickSort(top, priorStart);    quickSort(priorEnd, end);    }    }


0 0
原创粉丝点击