用了最笨的办法,遍历一次取出所有元素排序,生成新链表,没想到通过了~
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
ListNode* mergeKLists(vector<ListNode*>& lists) {
int i;
vector<int>v;
ListNode *temp = new ListNode(0);
for (i = 0; i < lists.size(); i++)
{
temp = lists[i];
while (temp != NULL)
{
v.push_back(temp->val);
temp = temp->next;
}
}
sort(v.begin(), v.end());
ListNode *result = new ListNode(0);
temp = result;
for (i = 0; i < v.size(); i++)
{
result->next = new ListNode(v[i]);
result = result->next;
}
return temp->next;
}
};
分治法和最小堆法参考:点击打开链接