class Solution {
public:
ListNode* mergeKLists(vector<ListNode*>& lists) {
int n=lists.size(),i=0,k=1;
if(n<1) return NULL;
if(n<2) return lists[0];
ListNode *l[2],*head;
l[0]=lists[0];
l[1]=new ListNode(1);
while(i!=n-1)
{
i++;
if(!lists[i]) continue;
head=l[k];
while(l[1-k]&&lists[i])
{
if(l[1-k]->val < lists[i]->val)
{
head->next=l[1-k];
l[1-k]=l[1-k]->next;
}
else
{
head->next=lists[i];
lists[i]=lists[i]->next;
}
head=head->next;
}
head->next=l[1-k]?l[1-k]:lists[i];
l[k]=l[k]->next;
k=1-k;
if(n-1-i)l[k]=new ListNode(1);
}
return l[1-k];
}
};
合并k个有序链表(暴力)
最新推荐文章于 2023-03-02 21:58:12 发布