Leetcode 23 Merge k Sorted Lists

来源:互联网 发布:python能用来做什么 编辑:程序博客网 时间:2024/06/07 04:52

Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity.

k个序列的排序问题,可以分解为多个两个序列的排序问题。

但是每一次拿哪两个序列出来合并是一个问题。

要减少时间复杂度,二分法是一个不错的选择,log是个好东西

/** * Definition for singly-linked list. * public class ListNode { *     int val; *     ListNode next; *     ListNode(int x) { val = x; } * } */public class Solution {   public static ListNode mergeKLists(ListNode[] lists){    return binary(lists,0,lists.length-1);}public static ListNode binary(ListNode[] lists,int s,int e){    if(s==e)  return lists[s];    if(s<e){        int q=s + (e-s)/2;        ListNode l1=binary(lists,s,q);        ListNode l2=binary(lists,q+1,e);        return sort2(l1,l2);    }else        return null;}public static ListNode sort2(ListNode l1,ListNode l2){    if(l1==null) return l2;    if(l2==null) return l1;    if(l1.val<l2.val){        l1.next=sort2(l1.next,l2);        return l1;    }else{        l2.next=sort2(l1,l2.next);        return l2;    }}}


0 0
原创粉丝点击