题目:
输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。
示例1:
输入:1->2->4, 1->3->4
输出:1->1->2->3->4->4
限制:
0 <= 链表长度 <= 1000
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/he-bing-liang-ge-pai-xu-de-lian-biao-lcof
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
解题思路:
1.判断两个链表中存在空链表的情况
2.合并后的链表指向两个链表中头结点较小的那个,然后递归比较后续节点值的大小,作为合并后的链表的next域
代码实现:
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {
if(l1==nullptr){
return l2;
}
else if(l2==nullptr){
return l1;
}
ListNode* newHead=nullptr;
if(l1->val<l2->val){
newHead=l1;
newHead->next=mergeTwoLists(l1->next,l2);
}
else{
newHead=l2;
newHead->next=mergeTwoLists(l1,l2->next);
}
return newHead;
}
};
耗时和内存使用情况: