题目:
思路:
合并k个排序链表,
考虑特殊情况,假如k=0或k=1则没有必要排序;
一般情况,将前两个进行排序,然后将第一个更新,反复用第一个和后面的进行排序。这里是合并两个排序链表的方法。
具体实现如下:
public ListNode mergeKLists(ListNode[] lists) {
int k=lists.length;
if(k==1)
{
return lists[0];
}
if(k>1)
{
for(int i=1;i<k;i++)
{
ListNode dummy_node=new ListNode(0);
dummy_node.next=null;
ListNode tail=dummy_node;
while(true)
{
if(lists[0]==null)
{
tail.next=lists[i];
break;
}
if(lists[i]==null)
{
tail.next=lists[0];
break;
}
if(lists[0].val<lists[i].val)
{
tail.next=lists[0];
lists[0]=lists[0].next;
tail=tail.next;
}
else
{
tail.next=lists[i];
lists[i]=lists[i].next;
tail=tail.next;
}
}
lists[0]=dummy_node.next;
}
return lists[0];
}
return null;
}