如果你想在校招中顺利拿到更好的offer,阿秀建议你多看看前人的经验 ,比如准备 、简历 、实习 、上岸经历 、校招总结 、阿里、字节、腾讯、美团等一二线大厂真实面经 、也欢迎来一起参加秋招打卡活动 等;如果你是计算机小白,学习/转行/校招路上感到迷茫或者需要帮助,可以点此联系阿秀;免费分享阿秀个人学习计算机以来的收集到的好资源,点此白嫖;如果你需要《阿秀的学习笔记》网站中求职相关知识点的PDF版本的话,可以点此下载
# 21. 合并两个有序链表
力扣原题链接(点我直达) (opens new window)
将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
示例:
输入:1->2->4, 1->3->4
输出:1->1->2->3->4->4
1
2
2
# 第一版,熟悉一下怎么写的再说
执行用时 :12 ms, 在所有 cpp 提交中击败了77.75%的用户
内存消耗 :9 MB, 在所有 cpp 提交中击败了76.64%的用户
struct ListNode {
int val;
ListNode* next;
ListNode(int x) :val(x), next(nullptr) {}
};
ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {
if (l1 == nullptr) return l2;
if (l2 == nullptr) return l1;
ListNode* res=nullptr;
if (l1->val <= l2->val) {
res = l1;
l1 = l1->next;
}
else {
res = l2;
l2 = l2->next;
}
ListNode* head = res;
while (l1 && l2) {
if (l1->val <= l2->val) {
res->next = l1;
l1 = l1->next;
res = res->next;
} else {
res->next = l2;
l2 = l2->next;
res = res->next;
}
}
res->next = l1 == nullptr ? l2 : l1;
return head;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45