题目:
代码(首刷看解析 2024年3月5日):
以后再来实现归并或者优先队列
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode() : val(0), next(nullptr) {}
* ListNode(int x) : val(x), next(nullptr) {}
* ListNode(int x, ListNode *next) : val(x), next(next) {}
* };
*/
class Solution {
public:
ListNode* mergeTwoLists(ListNode* a, ListNode* b) {
if (!a) return b;
if (!b) return a;
ListNode* dummyHead = new ListNode();
ListNode* tail = dummyHead;
ListNode* aPtr = a, *bPtr = b;
while (aPtr && bPtr) {
if (aPtr->val < bPtr->val) {
tail->next = aPtr; aPtr = aPtr->next;
} else {
tail->next = bPtr; bPtr = bPtr->next;
}
tail = tail->next;
}
tail->next = (aPtr ? aPtr : bPtr);
return dummyHead->next;
}
ListNode* mergeKLists(vector<ListNode*>& lists) {
ListNode* mergeList = nullptr;
for (int i = 0; i < lists.size(); ++i) {
mergeList = mergeTwoLists(mergeList, lists[i]);
}
return mergeList;
}
};