由于两个列表有序 找到中位数只需要将两个列表合并之后找中间数
思路如下:
首先将两个列表输入数组a,b再将数组ab合并存进数组c
再输出数组c的中位数
贴ac代码:
#include<iostream>
using namespace std;
const int N=200010;
int a[N],b[N],c[N*2];
int main()
{
int n,m;
cin>>n;
for(int i=0;i<n;++i) cin>>a[i];
cin>>m;
for(int i=0;i<m;++i) cin>>b[i];
int i=0,j=0,k=0;
while(i<n&&j<m)
{
if(a[i]<b[j]) c[k++]=a[i++];
else c[k++]=b[j++];
}
while(i<n) c[k++]=a[i++];
while(j<m) c[k++]=b[j++];
cout<<c[n+m-1>>1];
return 0;
}