题目描述
输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。
示例1:
输入:1->2->4, 1->3->4
输出:1->1->2->3->4->4
限制:
0 <= 链表长度 <= 1000
思想
每次从两个链表中选择头结点元素最小的那个结点作为合并后的根结点。
代码实现
class Solution {
public:
ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {
if(l1==nullptr){
return l2;
}
else if(l2==nullptr){
return l1;
}
ListNode* head;
if(l1->val<l2->val){
head=l1;
head->next=mergeTwoLists(l1->next,l2);//每次选择一个最小的值作为头结点,然后指向剩下待排序的两条链表
}
else{
head=l2;
head->next=mergeTwoLists(l1,l2->next);
}
return head;
}
};