题目
合并 k 个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度
代码
public class Solution {
public ListNode MergeKLists(ListNode[] lists) {
if(lists.Length==0)
{
return null;
}
return Merge(0,lists.Length-1,lists);
}
public ListNode Merge(int i,int j,ListNode[] lists){
if(i>j)
{
return null;
}
if(i==j)
{
return lists[i];
}
int mid=i+(j-i)/2;
ListNode left=Merge(i,mid,lists);
ListNode right=Merge(mid+1,j,lists);
ListNode head=new ListNode(0);
ListNode runner=head;
//合并两个链表
while(left!=null&&right!=null){
if(left.val>right.val)
{
runner.next=right;
right=right.next;
runner=runner.next;
}else{
runner.next=left;
left=left.next;
runner=runner.next;
}
}
if(left==null&&right==null)
{
return head.next;
}
if(left==null)
{
runner.next=right;
}else{
runner.next=left;
}
return head.next;
}
}