关注我,分享高质量每日一题题解~
b站同名账号分享力扣杯历届真题视频题解,也欢迎大家提出宝贵意见!
思路:双指针
- 典型的双指针题目,两个指针分别从两个链表头部开始遍历,每次取两个指针指向元素较小的一个存入新链表,该指针右移;若某一个链表已被遍历完成,则直接将另一个链表剩余部分整体存入新链表即可。
代码(C++)
#include <bits/stdc++.h>
using namespace std;
int main() {
int n, m;
cin >> n;
vector<int> a(n);
for(int i = 0; i < n; i++) cin >> a[i];
cin >> m;
vector<int> b(m);
for(int j = 0; j < m; j++) cin >> b[j];
int first = 0, second = 0;
vector<int> ret;
while(first < n && second < m) {
if(a[first] < b[second]) {
ret.push_back(a[first]);
first++;
} else {
ret.push_back(b[second]);
second++;
}
}
while(first < n) {
ret.push_back(a[first]);
first++;
}
while(second < m) {
ret.push_back(b[second]);
second++;
}
for(int i = 0; i < n + m; i++) cout << ret[i] << " ";
return 0;
}