leetcode4 链表的归并排序

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



public class Solution {
     public ListNode sortList(ListNode head) {
         if (head== null ||head.next== null )
             return head;
         ListNode mid = getMid(head);
         ListNode right = sortList(mid.next);
         mid.next =  null ;
         ListNode left = sortList(head);
         return mergeSort(left, right);
     }
     private ListNode getMid(ListNode head){
         ListNode temp = head.next;
         ListNode mid = head;
         while (temp!= null &&temp.next!= null ){
             mid = mid.next;
             temp = temp.next.next;
         }
         return mid;
     }
     private ListNode mergeSort(ListNode left,ListNode right){
         if (left== null )
             return right;
         if (right== null )
             return left;
         ListNode head =  null ;
         if (left.val>right.val){
             head = right;
             right = right.next;
         } else {
             head = left;
             left = left.next;
         }
         ListNode temp = head;
         while (right!= null &&left!= null ){
             if (left.val>right.val){
                 temp.next = right;
                 right = right.next;
             } else {
                 temp.next = left;
                 left = left.next;
             }
             temp = temp.next;
         }
         if (right!= null ){
             temp.next = right;
         }
         if (left!= null ){
             temp.next = left;
         }
         return head;
     }
}



1 虫洞
  ListNode right = sortList(mid.next);
         mid.next =  null ;
         ListNode left = sortList(head);这样的我叫他们虫洞,我们需要跳进去,将一切任务完成,执行到底。我们终于出了这个虫洞,但我们才发现我们只是在另一个虫洞的一个步骤上。
那就继续努力,一层一层虫洞向上爬。终于有一天,我们彻底走出。
归并:
归并的思想核心在于由大化小,细化到底层,两两比较,再逐步往上走。每一层都是排序过的。短短几句,却完成的是如此大型的任务,真的一种奇迹。

研究算法最重要的是:1 把这作为最重要的事业,记住除了她,其他一切都不重要。世界与你无关,他人的过失与你无关。慢慢的,走进算法的世界,这里有最 奇妙的思路,最大也最小的操作。堪称神作。
2 当一个算法非常复杂,感觉无法征服她的时候,就根据样本,一步一步推演。只要掌握了一些重要的点,重要的思想,重要的规避点后,算法便可以理解。
3 研究算法时,不用刻意专心。算法的美妙之处在于她能带你走入心无旁骛的状态,心烦意乱,研究研究算法便能安静下来。有烦心的事,亲近算法。她能给你最温柔的安慰
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值