这题好像以前时间限制是400ms
前些年的408算法题
最优解好像是比较两个数组的中间值大小,然后舍去小的左边和大的右边,这样重复到最后,这样时间复杂度就是logn
因为pat上有输入,所以时间复杂度至少为O(n)。。。
当然可以利用排好序的条件,遍历两个数组,比较大小排序,最后输出中间值,这样时间复杂度就是O(n)
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int n ,m;
vector<int> num;
int main(){
cin>>n;
for(int i = 0; i < n; i++){
int temp;
scanf("%d",&temp);
num.push_back(temp);
}
cin>>m;
for(int i = 0; i < m; i++){
int temp;
scanf("%d",&temp);
num.push_back(temp);
}
sort(num.begin(),num.end());
cout<<num[(n + m - 1) / 2];
return 0;
}