一、辅助容器法
将每条链表的元素依次加入新建容器中,然后利用排序函数排序,最后利用新容器中的元素组成新链表。
class Solution {
public:
ListNode *mergeKLists(vector<ListNode *> &lists) {
vector<int> v;
for(int i=0;i<lists.size();i++)
{
ListNode *p=lists[i];
while(p)
{
v.push_back(p->val);
p=p->next;
}
}
sort(v.begin(),v.end());
ListNode *res=new ListNode(-1);
ListNode *cur=res;
for(int i=0;i<v.size();i++)
{
cur->next=new ListNode(v[i]);
cur=cur->next;
}
return res->next;
}
};
注意:
1.形参中vector<ListNode *> &lists,此lists容器储存的为每条链表的首地址,可用 lists[ k ] 来获取lists容器中第k+1个链表(下标从0开始)。
本文介绍了一种利用辅助容器实现多个链表合并的方法。该方法首先将所有链表元素存入容器并排序,然后按序创建新链表。代码示例使用了C++实现,并详细解释了如何遍历各个链表并将节点值加入到容器中,最后构建出有序链表。
644

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



