题目:
题解:
class Solution {
// 21. 合并两个有序链表
ListNode *mergeTwoLists(ListNode服务器托管 *list1, ListNode *list2) {
auto dummy = new ListNode(); // 用哨兵节点简化代码逻辑
auto cur = dummy; // cur 指向新链表的末尾
while (list1 && list2) {
if (list1->val val) {
cur->next = list1; // 把 list1 加到新链表中
list1 = list1->next;
} else { // 注:相等的情况加哪个节点都是可以的
cur->next = list2; // 把 list2 加到新链表中
list2 = list2->next;
}
cur = cur->next;
}
cur->next = list1 ? list1 : list2; // 拼接剩余链表
return dummy->next;
}
// 合并从 lists[i] 到 lists[j-1] 的链表
ListNode *mergeKLists(vector &lists, int i, int j) {
int m = j - i;
if (m == 0) return nullptr; // 注意输入的 lists 可能是空的
if (m == 1) return lists[i]; // 无需合并,直接返回
auto left = mergeKLists(lists, i, i + m / 2); // 合并左半部分
auto right = mergeKLists(lists, i + m / 2, j); // 合并右半部分
return me服务器托管rgeTwoLists(left, right); // 最后把左半和右半合并
}
public:
ListNode *mergeKLists(vector &lists) {
return mergeKLists(lists, 0, lists.size());
}
};
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
相关推荐: 探索图数据处理的魅力:使用Spark GraphX解析图数据和应用图算法
导语:在当今数据驱动的世界中,图数据处理和分析变得越来越重要。本文将介绍如何使用Spark GraphX,一个强大的图计算库,来处理和分析图数据。通过详细的Java代码示例和模拟输出结果,你将了解如何创建图、执行图操作和应用图算法,帮助你踏上图数据处理的探索之…