148.Sort List (M)
https://leetcode.com/problems/sort-list/
1.Description(Medium)
2.Code
public ListNode sortList(ListNode head){
if(head==null || head.next==null){
return head;
}
ListNode middle=findMiddle(head);
ListNode right=sortList(middle.next);
middle.next=null;
ListNode left=sortList(head);
return merge(left,right);
}
public ListNode findMiddle(ListNode head){
if(head==null){
return null;
}
ListNode slow=head;
ListNode fast=head.next;
while(fast!=null && fast.next!=null){
fast=fast.next.next;
slow=slow.next;
}
return slow;
}
public ListNode merge(ListNode left,ListNode right){
ListNode dummy=new ListNode(0);
ListNode temp=dummy;
while(left!=null && right!=null){
if(left.val<right.val){
temp.next=left;
left=left.next;
}else{
temp.next=right;
right=right.next;
}
temp=temp.next; //caution
}
if(left!=null){
temp.next=left;
}
if(right!=null){
temp.next=right;
}
return dummy.next;
}Last updated