题目:
Merge k sorted
linked lists and return it as one sorted list. Analyze and describe its complexity.
题意:
将k个排序好的链表融合为一个排序链表。
代码:
ListNode* mergeKLists(vector<ListNode*>& lists) {
ListNode* head = NULL;
if (lists.size() < 1)
return head;
head = lists[0];
for (int i = 1; i < lists.size(); i++)
{
ListNode *q = lists[i], *p = head, *preP = head;
if (q == NULL)
continue;
while (p != NULL || q != NULL)
{
if (p == NULL)
{
if (preP == NULL)
head = q;
else
preP->next = q;
break;
}
if (q == NULL)
break;
if (p->val < q->val)
{
preP = p;
p = p->next;
}
else
{
ListNode *startQ = q, *endQ = q;
while (q!=NULL && p->val >= q->val)
{
endQ = q;
q = q->next;
}
if (preP == p) // append to the head node
{
head = startQ;
endQ->next = p;
}
else
{
preP->next = startQ;
endQ->next = p;
}
}
}
}
return head;
}
题外话:
太久不更博~月底加月食,充满刺激和挑战的一月,感恩和感谢。二月,期待~