首页 > 代码库 > Problem Sort List
Problem Sort List
Problem Description:
Sort a linked list in O(n log n) time using constant space complexity.
Solution:
1 public ListNode sortList(ListNode head) { 2 ListNode tail , p, q, e; 3 int insize, merges, psize, qsize, i; 4 if (head == null) return null; 5 6 7 insize = 1; 8 while (true) { 9 p = head;10 head = null;11 tail = null;12 13 merges = 0;14 15 while (p != null) {16 17 merges++;18 q = p;19 psize = 0;20 for (i = 0; i < insize; i++) {21 psize++;22 q = q.next;23 if (q == null) break;24 }25 26 qsize = insize;27 while (psize > 0 || (qsize > 0 && q != null)) {28 if (psize == 0) {29 e = q; q = q.next; qsize--;30 } else if(qsize == 0 || q == null) {31 e = p; p = p.next; psize--;32 } else if ((p.val - q.val) <= 0) {33 e = p; p = p.next; psize--;34 } else {35 e = q; q = q.next; qsize--;36 }37 38 if (tail != null) {39 tail.next = e;40 } else {41 head = e;42 }43 44 tail = e;45 }46 47 p = q;48 }49 50 tail.next = null;51 52 if (merges <= 1) return head;53 54 insize *= 2; 55 }56 }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。