leetcode sortlist 把链表进行排序 用归并排序即可
在好多博客上发现代码是错误的也贴出来 while里的判定条件是三个 那些两个条件的 我都不懂你们是怎么过的。。
public static ListNode sortList(ListNode head) {
if (head==null || head.next==null)
return head;
ListNode fast=head;
ListNode slow=head;
while (fast.next!=null && fast.next.next!=null ){
slow=slow.next;
fast=fast.next.next;
}
ListNode head2= slow.next;
slow.next=null;
ListNode l1=sortList(head);
ListNode l2=sortList(head2);
return mergeTwo(l1,l2);
}
public static ListNode mergeTwo(ListNode list1,ListNode list2){
ListNode result = new ListNode(0);
ListNode p=result;
while (list1!=null && list2 !=null ){
if (list1.val<=list2.val){
p.next=list1;
list1=list1.next;
p=p.next;
}else{
p.next=list2;
list2=list2.next;
p=p.next;
}
}
while(list1 !=null){
p.next=list1;
list1=list1.next;
p=p.next;
}
while(list2 !=null){
p.next=list2;
list2=list2.next;
p=p.next;
}
return result.next;
}
在网上寻找好的方法时发现,基本都是抄的,错的也抄的那么起劲,网上前几个博客 代码明显有问题,while的判定条件必须加上红色标注,希望那些人不要坑人了。。