将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
示例:
输入:1->2->4, 1->3->4 输出:1->1->2->3->4->4
思路:
可以比较两个链表中元素的大小 然后加入新的链表
也可以使用递归方法
核心都是比较元素大小然后插入
注意链表为空的特殊情况
代码:
class Solution{
public:
ListNode* mergeTwoLists(ListNode* L1, ListNode* L2){
if(! L1) return L2;
if(! L2) return L1;
if(L1->val < L2->val){
L1->next = mergeTwoLists(L1->next, L2);
return L1;
}else{
L2->next = mergeTwoLists(L1, L2->next);
return L2;
}
}
};