【題目】Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity.
【分析】
思路基於兩個有序鏈表合併。只不過每次都需要遍歷選出K個鏈表中最小的那個數。
【代碼】
下面的代碼始終LTE,原因是一個很長的case超時,改了好久也沒有改對,希望後面可以糾正!
class Solution {
public:
ListNode *mergeKLists(vector<ListNode *> &lists)
{
int n=lists.size();
if(n==0)return NULL;
ListNode *head=new ListNode(INT_MIN);
ListNode *ret=head;
int min;
bool finish;
while(1)
{
finish=true;
min=INT_MAX;
int i;int mini;
for(i=0;i<lists.size();i++)
{
if(lists[i]!=NULL)
{
if(lists[i]->val<min)
{
min=lists[i]->val;
mini=i;
finish=false;
}
}
}
if(finish)break;
head->next=lists[mini];
head=head->next;
lists[mini]=lists[mini]->next;
}
return ret->next;
}
};