1029. Median (25)
开始没注意,sort超时。后来发现给定的是两个排序好的数组,O(N)能过了,注意别越界,听说网上还有O(logN)的算法
mid表示要删除的个数(这里删小的) 9个的时候要删4个,第5个是median。10个的时候要删4个,第5个是median。
#include<iostream>
#include<cstdio>
#include<string.h>
#include<algorithm>
using namespace std;
const int N=1000005;
typedef long long LL;
LL a[N],b[N];
int main(){
int n,m;
cin>>n;
for(int i=0;i<n;i++)
scanf("%lld",&a[i]);
cin>>m;
for(int i=0;i<m;i++)
scanf("%lld",&b[i]);
int mid=(n+m-1)/2,la=0,lb=0;
while(mid--){
if(la==n)
lb++;
else if(lb==m)
la++;
else if(a[la]<b[lb])
la++;
else
lb++;
}
LL ans;
if(la==n)
ans=b[lb];
else if(lb==m)
ans=a[la];
else
ans=min(a[la],b[lb]);
printf("%lld",ans);
return 0;
}