题目地址:
https://www.acwing.com/problem/content/3642/
给定两个元素有序(从小到大)的链表,要求将两个链表合并成一个有序(从小到大)链表。
输入格式:
第一行输入第一个链表的结点数
S
1
S_1
S1。
第二行输入
S
1
S_1
S1个整数,两两之间用空格隔开。
第三行输入第二个链表的结点数
S
2
S_2
S2。
第四行输入
S
2
S_2
S2个整数,两两之间用空格隔开。
输出格式:
输出合并之后的链表结果,两两之间用空格隔开。
数据范围:
1
≤
S
1
,
S
2
≤
100
1≤S_1,S_2≤100
1≤S1,S2≤100
#include <iostream>
using namespace std;
const int N = 110;
int n, m;
int a[N], b[N];
int main() {
cin >> n;
for (int i = 1; i <= n; i++) cin >> a[i];
cin >> m;
for (int i = 1; i <= m; i++) cin >> b[i];
for (int i = 1, j = 1; i <= n || j <= m; )
if (i > n) printf("%d ", b[j++]);
else if (j > m) printf("%d ", a[i++]);
else a[i] <= b[j] ? printf("%d ", a[i++]) : printf("%d ", b[j++]);
puts("");
}
时间复杂度 O ( S 1 + S 2 ) O(S_1+S_2) O(S1+S2),空间 O ( 1 ) O(1) O(1)。