Skip to content

Commit 7418252

Browse files
authored
Create 21_Merge Two Sorted Lists
1 parent 24f7260 commit 7418252

File tree

1 file changed

+40
-0
lines changed

1 file changed

+40
-0
lines changed

Diff for: 21_Merge Two Sorted Lists

+40
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
/**
2+
* Definition for singly-linked list.
3+
* struct ListNode {
4+
* int val;
5+
* ListNode *next;
6+
* ListNode(int x) : val(x), next(NULL) {}
7+
* };
8+
*/
9+
class Solution {
10+
public:
11+
ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {
12+
13+
ListNode *result = new ListNode();
14+
ListNode *r= result;
15+
ListNode *first = r; //first用來記錄一開始的位址,否則之後找不回來(因r會變動)
16+
17+
while(l1 && l2){
18+
19+
if(l1->val <= l2->val){
20+
r->next = new ListNode(l1->val);
21+
l1 = l1->next;
22+
}
23+
else {
24+
r->next = new ListNode(l2->val);
25+
l2 = l2->next;
26+
}
27+
r = r->next;
28+
}
29+
if(l1)
30+
r->next = l1;
31+
// 若l1還有,l2沒有,則l1全部加入r
32+
// 為啥可以直接加入?
33+
// 因前面while已比過大小,此時剩下的l1,必定是比較大的數
34+
if(l2)
35+
r->next = l2;
36+
37+
return first->next;
38+
39+
}
40+
};

0 commit comments

Comments
 (0)