zoukankan      html  css  js  c++  java
  • LeetCode 148 Sort List

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

    思路:要想时间复杂度达到O(n log n) ,那么有两种。一种是合并排序,还有一种是高速排序,而要想空间复杂度为常数。那么仅仅能使用递归,本人使用的是递归的合并排序。代码例如以下:
    /**
     * Definition for singly-linked list.
     * class ListNode {
     *     int val;
     *     ListNode next;
     *     ListNode(int x) {
     *         val = x;
     *         next = null;
     *     }
     * }
     */
    public class Solution {
       private ListNode merge(ListNode l1, ListNode l2) {
            if(l1==null&&l2==null) return null;
            ListNode head=new ListNode (-1);
            ListNode pNode=head;
            while(l1!=null||l2!=null){
    			if(l1==null) {
    				pNode.next=l2;
    				return head.next;
    			}
    			if(l2==null){
    				pNode.next=l1;
    				return head.next;
    			}
                if(l1.val>l2.val){
    				pNode.next=l2;
    				l2=l2.next;
                }else {
    				pNode.next=l1;
    				l1=l1.next;
                }
                pNode=pNode.next;                   
            }
            return head.next;
        }
       private ListNode mergeSort(ListNode head){
           if(head==null||head.next==null)   //just one element
               return head;
           ListNode p=head, q=head, pre=null;
           while(q!=null&&q.next!=null){
               q=q.next.next;
               pre=p;
               p=p.next;  //divide into two parts
           }
           pre.next=null;
           ListNode lhalf=mergeSort(head);
           ListNode rhalf=mergeSort(p);  //recursive
           return merge(lhalf, rhalf);   //merge
       }
        public ListNode sortList(ListNode head) {
            return mergeSort( head);
        }
    }



  • 相关阅读:
    连续型随机变量
    离散型随机变量
    vue1.0生命周期
    vue2.0生命周期函数
    vue2.0 vue.set()
    vue2.0 vue.extend()的拓展
    vue2.0 自定义指令详解
    vue2.0 v-model指令
    vue2.0排序应该注意的问题
    vue2.0版本指令v-if与v-show的区别
  • 原文地址:https://www.cnblogs.com/yutingliuyl/p/7009667.html
Copyright © 2011-2022 走看看