本文共 1313 字,大约阅读时间需要 4 分钟。
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的判定条件必须加上红色标注,希望那些人不要坑人了。。
转载地址:http://wvdqi.baihongyu.com/