迭代

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
class Solution {
public:
ListNode* mergeTwoLists(ListNode* n1, ListNode* n2) {
ListNode dummy (0) ;
ListNode* start= &dummy ;

while(n1 && n2)
{
if(n1->val <= n2->val)
{
start->next = n1;
n1 = n1->next;
}
else
{
start->next = n2;
n2 = n2->next;
}
start = start->next;
}
start->next = n1 ? n1 : n2 ; //剩余部分的加入
return dummy.next;
}
};

递归

1
2
3
4
5
6
7
8
9
10
11
12
class Solution {
public:
ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {
if(l1 == NULL) return l2;
if(l2 == NULL) return l1;

if(l1->val < l2->val) l1->next = mergeTwoLists(l1->next, l2);
else l2->next = mergeTwoLists(l1,l2->next);

return l1->val < l2->val ? l1 : l2 ;
}
};