LeetCode : Sort List

来源:互联网 发布:p站下图软件 编辑:程序博客网 时间:2024/06/15 05:18

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

ListNode *Merge(ListNode *list01,ListNode *list02){ListNode *head=NULL,*pointer=NULL;if(NULL!=list01&&NULL!=list02&&list01->val<list02->val){pointer=list01;head=list01;list01=list01->next;}else if(NULL!=list01&&NULL!=list02){pointer=list02;head=list02;list02=list02->next;}while (list01&&list02){if(list01->val<list02->val){pointer->next=list01;pointer=list01;list01=list01->next;}else{pointer->next=list02;pointer=list02;list02=list02->next;}}if(pointer){pointer->next=list01==NULL?list02:list01;}else{head=list01==NULL?list02:list01;}return head;}    ListNode *sortList(ListNode *head) {ListNode *start1=head,*end1=NULL,*low=head,*fast=head;ListNode *start2=NULL,*end2=NULL;if(head==NULL) return NULL;while (fast->next&&fast->next->next){low=low->next;fast=fast->next->next;}if(NULL==low->next){return low;}else{start1=head;start2=low->next;low->next=NULL;}return Merge(sortList(start1),sortList(start2));    }


 

0 0
原创粉丝点击