LeedCode_合并K个排序链表
题目说明
合并 k 个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。
输入:
[
1->4->5,
1->3->4,
2->6
]
输出: 1->1->2->3->4->4->5->6
链接:https://leetcode-cn.com/problems/merge-k-sorted-lists
分析:提高效率的方法,将链表中的数据存储到数组中,在数组中排序,在进行重新组链。
ListNode* mergeKLists(vector<ListNode*>& lists)
{
ListNode* res;
int n = lists.size();
if (n == 0)
{
return NULL;
}
if (n == 1)
{
return lists[0];
}
vector<int> nums;
for (int i = 0; i < n; i++)
{
ListNode* p=lists[i];
while (p!=NULL)
{
nums.push_back(p->val);
p = p->next;
}
}
if (nums.size() == 0)
{
return NULL; //针对{{},{}}的测试用例
}
sort(nums.begin(), nums.end());
res= new ListNode(nums[0]);
res->next = NULL;
ListNode* pre = res;
for (int i = 1; i < nums.size(); i++)
{
ListNode* q = new ListNode(nums[i]);
q->next = pre->next;
pre->next = q;
pre = q;
}
return res;
}
来源:CSDN
作者:luncy_yuan
链接:https://blog.csdn.net/luncy_yuan/article/details/104074535