Merge two sorted linked lists and return it as a new list. The new list should be made by splicing together the nodes of the first two lists.
Example:
Input: 1->2->4, 1->3->4
Output: 1->1->2->3->4->4
最朴素的方法:
ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {
ListNode*dummy = new ListNode(-1);
ListNode*cur=dummy;
while(l1&&l2){
if(l1->val<=l2->val){
cur->next=l1;
l1=l1->next;
}else{
cur->next=l2;
l2=l2->next;
}
cur=cur->next;
}
cur->next=l1?l1:l2;
return dummy->next;
}
递归的方法:
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;
}
}
本文介绍了一种将两个已排序的链表合并为一个新排序链表的方法。提供了两种实现方式:一种是非递归的方式,通过遍历两个链表并比较节点值来合并;另一种是递归的方式,通过不断调用自身函数直至其中一个链表为空。
2367

被折叠的 条评论
为什么被折叠?



