1、题目描述
2、分析
利用 vector 存储指针,同时合并k个链表。
3、代码
ListNode* mergeKLists(vector<ListNode*>& lists) { vector<ListNode*> p;
for (vector<ListNode*>::iterator it = lists.begin(); it != lists.end(); it++) {
if (*it != NULL){
ListNode *pn = *it;
p.push_back(pn);
}
} if (p.size() == )
return NULL; ListNode *dummy = new ListNode();
ListNode *pn = dummy; while (p.size() > ) {
int n = minval(p);
pn->next = p[n];
pn = pn->next;
p[n] = p[n]->next;
if (p[n] == NULL)
p.erase(p.begin() + n);
}
return dummy->next;
} int minval(vector<ListNode*> p)
{
auto res = p.begin();
for (auto it = p.begin(); it != p.end(); it++) {
if ((*it)->val <= (*res)->val)
res = it;
}
return res - p.begin();
}