zoukankan      html  css  js  c++  java
  • [leedcode 23] Merge k Sorted Lists

    /**
     * Definition for singly-linked list.
     * public class ListNode {
     *     int val;
     *     ListNode next;
     *     ListNode(int x) { val = x; }
     * }
     */
    public class Solution {
        //本题有两种解法,一种是所有的链表一起进行比较,因为每个节点平均需要比较k次,一共kn个节点所以时间复杂度是O(knk)
        //第二种借鉴了二分排序法,T(k)=2T(k/2)+O(nk);时间复杂度是O(nklogk)
        public ListNode mergeKLists(ListNode[] lists) {
            if(lists.length<1) return null;
            if(lists.length==1) return lists[0];
            return merge1(lists,0,lists.length-1);
        }
        public ListNode merge1(ListNode[] lists,int start,int end){
           
            if(start<end){
                int mid=(start+end)/2;
                ListNode l1=merge1(lists,start,mid);
                ListNode l2=merge1(lists,mid+1,end);
                return merge2(l1,l2);//二分排序
            }else{
                return lists[start];
            }
        }
        
        public ListNode merge2(ListNode l1,ListNode l2){
            ListNode newHead=new ListNode(-1);
            ListNode temp=newHead;
            while(l1!=null&&l2!=null){
                if(l1.val<l2.val){
                    temp.next=l1;
                    l1=l1.next;
                    
                }else{
                    temp.next=l2;
                    l2=l2.next;
                }
                temp=temp.next;
                
                
            }
            if(l1!=null){
                temp.next=l1;
            }
            if(l2!=null){
                temp.next=l2;
            }
            return newHead.next;
            
            
            
        }
    }
  • 相关阅读:
    sql 内连接外链接
    深入剖析java并发之阻塞队列LinkedBlockingQueue与ArrayBlockingQueue
    mysql关闭以及重启密码
    学习---书籍
    volatile修饰符
    System.out.println和System.err.println的区别
    懒加载和急加载(lazy/eager)
    load与get在hiberate中的区别
    html
    js
  • 原文地址:https://www.cnblogs.com/qiaomu/p/4628698.html
Copyright © 2011-2022 走看看