您的位置:首页 > 其它

LeetCode | 23. Merge k Sorted Lists

2018-01-31 19:36 253 查看
题目:

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;
}

题外话:

太久不更博~月底加月食,充满刺激和挑战的一月,感恩和感谢。二月,期待~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: