zoukankan      html  css  js  c++  java
  • Leetcode 148.排序链表

    排序链表

    在 O(n log n) 时间复杂度和常数级空间复杂度下,对链表进行排序。

    示例 1:

    输入: 4->2->1->3

    输出: 1->2->3->4

    示例 2:

    输入: -1->5->3->4->0

    输出: -1->0->3->4->5

     1 class Solution {
     2     public ListNode sortList(ListNode head) {
     3         if(head==null||head.next==null) return head;
     4         return mergeSort(head);
     5     }
     6 
     7     private ListNode mergeSort(ListNode head){
     8         if(head==null||head.next==null) return head;
     9         //分治
    10         ListNode p1=head;
    11         ListNode p2=head;
    12         while(p2.next!=null&&p2.next.next!=null){
    13             p1=p1.next;
    14             p2=p2.next.next;
    15         }
    16         ListNode left=head;
    17         ListNode right=p1.next;
    18         p1.next=null;
    19         //排序子链表
    20         left=mergeSort(left);
    21         right=mergeSort(right);
    22         //合并
    23         if(left==null) return right;
    24         if(right==null) return left;
    25         ListNode h=new ListNode(-1);
    26         ListNode p=h;
    27         while(left!=null && right!=null){
    28             if(left.val<right.val){
    29                 p.next=left;
    30                 left=left.next;
    31                 p=p.next;
    32             }else{
    33                 p.next=right;
    34                 right=right.next;
    35                 p=p.next;
    36             }
    37         }
    38         if(left==null) p.next=right;
    39         else p.next=left;
    40         return h.next;
    41     }
    42 }
  • 相关阅读:
    其他
    聚类算法:ISODATA算法
    大神博客
    Fiddldr 教程之:HTTP协议详解(转)
    设计模式之装饰模式的复习
    NOIP 2011 聪明的质监员
    CSP-S2020/NOIP2020模板总结(Updating)
    CSP-S2020/NOIP2020复习指南
    洛谷 U137412 高斯的小宇宙
    NOIP2020模板测试题大全
  • 原文地址:https://www.cnblogs.com/kexinxin/p/10195985.html
Copyright © 2011-2022 走看看