不能使用STL再写一遍
时间: 2024-03-17 15:47:31 浏览: 25
好的,下面是不使用STL的代码实现:
```C++
struct ListNodeComp {
bool operator() (const ListNode* a, const ListNode* b) const {
return a->val > b->val;
}
};
ListNode* mergeKLists(vector<ListNode*>& lists) {
priority_queue<ListNode*, vector<ListNode*>, ListNodeComp> pq;
for (auto list : lists) {
if (list) pq.push(list);
}
ListNode* head = new ListNode(0);
ListNode* curr = head;
while (!pq.empty()) {
ListNode* node = pq.top();
pq.pop();
curr->next = node;
curr = curr->next;
if (node->next) pq.push(node->next);
}
return head->next;
}
```
这段代码与前面的代码基本相同,只是使用了自定义的比较函数ListNodeComp,实现了与STL中priority_queue一样的功能。需要注意的是,在循环结束后要记得删除头节点head。