Sort a linked list in O(n log n) time using constant space Complexity.
sorting, which requires the time complexity of O (nlog (n)) and the spatial complexity of constants, then use merge to be Able.
/*** Definition for singly-linked List. * public class ListNode {* int val; * ListNode next; * ListNode (int X) {val = x;}}*/ public classSolution { publicListNode sortlist (listnode head) {if(head = =NULL|| Head.next = =NULL) returnhead; intSize = 1; ListNode Start=NewListNode (0); Start.next=head; while(true) {listnode Node1=start; ListNode Node2=start.next; for(inti = 0; I < size && node2!=NULL; i++) {node2=node2.next; } if(node2 = =NULL ) break; ListNode nnn=start.next; while(node2! =NULL) {node1=Helper (node1,node2,size); if(node1 = =NULL ) break; Node2=node1.next; for(inti = 0; i< size && node2! =NULL; i++) {node2=node2.next; }} size*=2; } returnstart.next; } publicListNode Helper (listnode Node1,listnode node2,intSize) { intNUM1 = 0,num2 = 0; ListNode node=NULL; if(node1.next.val <Node2.val) {node=node1.next; Node1=node1.next.next; NUM1++; }Else{listnode nn=node1.next; Node1.next=node2; Node1=nn; Node=node2; Node2=node2.next; Num2++; } while(num1 < size && num2 < size && node1! =NULL&& node2! =NULL){ if(node1.val <Node2.val) {node.next=node1; Node=node1; Node1=node1.next; NUM1++; }Else{node.next=node2; Node=node2; Node2=node2.next; Num2++; } } while(num1 < size && node1! =NULL) {node.next=node1; Node=node1; Node1=node1.next; NUM1++; } while(num2 < size && node2! =NULL) {node.next=node2; Node=node2; Node2=node2.next; Num2++; } Node.next=node2; returnnode; }}
Leetcode 148. Sort List-----java