难度:2
题意:
将多个已排序数组组合成一个
解法:
归并
class Solution
{
public:
ListNode *mergeKLists(vector<ListNode *> &lists)
{
ListNode *ans=NULL,*Back;
int n=0;
for(int i=0;i<lists.size();i++)
{
if(lists[i]) n++;
}
while(n)
{
int min_i=0;
for(int i=1;i<lists.size();i++)
{
if(lists[i]!=NULL)
{
if(lists[min_i] == NULL)
{
min_i=i;
continue;
}
if(lists[i]->val<lists[min_i]->val)
{
min_i=i;
continue;
}
}
}
ListNode *tmp=new ListNode(lists[min_i]->val);
//将tmp插入
if(ans == NULL)
{
ans=tmp;
Back=ans;
}
else
{
Back->next=tmp;
Back=tmp;
}
//将
lists[min_i]=lists[min_i]->next;
if(!lists[min_i]) n--;
}
return ans;
}
};