将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
示例:
输入:1->2->4, 1->3->4
输出:1->1->2->3->4->4
解析:比较简单,遍历两个链表即可。
时间复杂度O(m+n) ,空间复杂度O(1)
class Solution {
public:
ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {
ListNode* head = new ListNode(0);
ListNode* pre = head;
while(l1!=nullptr&&l2!=nullptr){
if(l1->val<l2->val){
pre->next = l1;
l1 = l1->next;
}
else{
pre->next = l2;
l2 = l2->next;
}
pre = pre->next;
}
pre->next = (l1?l1:l2);
return head->next;
}
};