其实直接将结点丢进数组里快排就行了。
class Solution {
public:
ListNode *mergeKLists(vector<ListNode *> &lists) {
vector<ListNode *>v;
for (auto head:lists) {
while (head) {
v.emplace_back(head);
head=head->next;
}
}
sort(v.begin(),v.end(),[](const ListNode*a,const ListNode*b)->bool{
return a->val<b->val;
});
ListNode dummmy(0);
ListNode*head = &dummmy;
for (auto&x:v) {
head->next = x;
head= x;
}
head->next = nullptr;
return dummmy.next;
}
};

京公网安备 11010502036488号