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);
        }
    }



  • 相关阅读:
    无限维
    黎曼流形
    why we need virtual key word
    TOJ 4119 Split Equally
    TOJ 4003 Next Permutation
    TOJ 4002 Palindrome Generator
    TOJ 2749 Absent Substrings
    TOJ 2641 Gene
    TOJ 2861 Octal Fractions
    TOJ 4394 Rebuild Road
  • 原文地址:https://www.cnblogs.com/yutingliuyl/p/7009667.html
Copyright © 2011-2022 走看看