Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity.
代码如下:
class Solution {
public:
ListNode* mergeKLists(vector<ListNode*>& lists) {
if (lists.empty()) return NULL;
ListNode *front = new ListNode(INT_MAX);
ListNode *f = front;
int min = 0, count = 0;
for (int i=0;i<lists.size();++i)
{
if (lists[i]!=NULL&&lists[i]->val < f->val)
{
f->val = lists[i]->val;
min = i;
}
if (lists[i] == NULL) ++count;
}
if (count == lists.size()) return NULL;
ListNode *s = lists[min];
ListNode *r = new ListNode(0);
if (lists[min]->next != NULL)
{
r->val = lists[min]->next->val;
r->next = lists[min]->next->next;
delete s;
s = NULL;
lists[min] = r;
}
else
{
delete s;
s = NULL;
lists[min] = NULL;
++count;
}
f->next = mergeKLists(lists);
return front;
}
};
本文介绍了一种算法,用于合并多个已排序的链表成为一个单一的有序链表。通过递归方式,每次找到当前最小节点并更新链表,直至所有节点被合并。

297

被折叠的 条评论
为什么被折叠?



