题目描述:
一开始思路并不是很明确,后来想起来之前做过合并两个数组的题目,所以可以一直两两合并,直到结束,得到最终的结果。但是我之前写的合并两个链表的代码会导致运算超过时间限制。用官方题解的就不会。附上官方代码:
class Solution {
public:
ListNode* mergeTwoLists(ListNode* a, ListNode* b) {
if ((!a) || (!b)) return a ? a : b;
ListNode head, * tail = &head, * 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 head.next;
}
};
还有一种思路是将链表组都分成各个部分,两两配对,如下图所示: