题目描述
Description
给定两个链表数组,每个链表都已经按升序排列。请将两个链表合并到一个升序链表中,返回合并后的链表。
Input
第一行为一个数x,表示第一个链表的结点的数量;(x<=1000)
第二行有x个整数,每个数之间有一空格,表示结点的值;
第三个为一个数y; (y<=1000)
第四行有y个整数,中间有一空格隔开,表示第二个链表的结点的值。
Output
降序输出新链表的每个结点的值。
Sample Input
3
1 4 5
3
1 3 4
Sample Output
5 4 4 3 1 1
题解
分析
上面这道题看似很难,实际上 非常×n 的简单。如果不是在比赛,普通刷题时根本就不会检查你到底有没有用链表,所以就延伸出了这个code
code
#include<bits/stdc++.h>
using namespace std;
int cmp(int a, int b){
return a > b;
}
int main(){
vector<int> a;
int x, y;
cin >> x;
for (int i = 0;i < x;i++){
int tmp;
cin >> tmp;
a.push_back(tmp);
}
cin >> y;
for (int i = 0;i < y;i++){
int tmp;
cin >> tmp;
a.push_back(tmp);
}
sort(a.begin(), a.end(), cmp);
for (int i = 0;i < x + y;i++){
cout << a[i] << " ";
}
return 0;
}
实际上也就是第一次输入完后,第二次输入讲所有的元素都添加到a的后面,最后按从大到小排序,再输入就 A C AC AC了