/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
ListNode *mergeKLists(vector<ListNode *> &lists) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
if (lists.size() == 0) return NULL;
ListNode* res = lists[0];
for (int i = 1; i < lists.size(); ++i)
{
res = mergeTwoList(res, lists[i]);
}
return res;
}
ListNode* mergeTwoList(ListNode* l1, ListNode* l2)
{
ListNode* res = NULL;
ListNode** pp = &res;
ListNode* cur1 = l1;
ListNode* cur2 = l2;
while (cur1 && cur2)
{
if (cur1->val < cur2->val)
{
*pp = cur1;
pp = &(cur1->next);
cur1 = cur1->next;
}
else
{
*pp = cur2;
pp = &(cur2->next);
cur2 = cur2->next;
}
}
if (cur1)
*pp = cur1;
else
*pp = cur2;
return res;
}
};[Leetcode] Merge k Sorted Lists
最新推荐文章于 2024-04-03 21:24:25 发布
本文介绍了一种高效的算法来合并多个已排序的链表。通过定义一个Solution类,该类包含两个主要方法:mergeKLists用于合并K个排序链表;mergeTwoList则负责合并两个链表。此算法采用迭代方式,逐步将每个链表两两合并,直至所有链表完全合并为一个有序链表。
1470

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



