Skip to content

Commit d7c9c85

Browse files
author
kwu130
committed
feat(src): add 21-mergeTwoLists
1 parent 2139656 commit d7c9c85

1 file changed

Lines changed: 61 additions & 0 deletions

File tree

‎src/21-mergeTwoLists.cpp‎

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
//
2+
// Created by 1412 on 2025/10/16.
3+
//
4+
5+
#include <bits/stdc++.h>
6+
#include "../include/common.h"
7+
8+
using namespace std;
9+
using listHelper::ListNode;
10+
11+
class Solution {
12+
public:
13+
ListNode* mergeTwoLists(ListNode* list1, ListNode* list2) {
14+
ListNode* dummy = new ListNode(-1);
15+
ListNode* cur = dummy;
16+
while (list1 && list2) {
17+
if (list1->val < list2->val) {
18+
cur->next = list1;
19+
list1 = list1->next;
20+
} else {
21+
cur->next = list2;
22+
list2 = list2->next;
23+
}
24+
cur = cur->next;
25+
}
26+
cur->next = list1 ? list1 : list2;
27+
return dummy->next;
28+
}
29+
};
30+
31+
void test() {
32+
Solution s;
33+
ListNode* l1 = listHelper::build({1, 2, 4});
34+
ListNode* l2 = listHelper::build({1, 3, 4});
35+
ListNode* expected = listHelper::build({1, 1, 2, 3, 4, 4});
36+
ListNode* res = s.mergeTwoLists(l1, l2);
37+
assert(listHelper::equal(res, expected));
38+
listHelper::free(res);
39+
listHelper::free(expected);
40+
41+
l1 = listHelper::build({});
42+
l2 = listHelper::build({});
43+
expected = listHelper::build({});
44+
res = s.mergeTwoLists(l1, l2);
45+
assert(listHelper::equal(res, expected));
46+
listHelper::free(res);
47+
listHelper::free(expected);
48+
49+
l1 = listHelper::build({});
50+
l2 = listHelper::build({0});
51+
expected = listHelper::build({0});
52+
res = s.mergeTwoLists(l1, l2);
53+
assert(listHelper::equal(res, expected));
54+
listHelper::free(res);
55+
listHelper::free(expected);
56+
}
57+
58+
int main() {
59+
test();
60+
return 0;
61+
}

0 commit comments

Comments
 (0)