Note
- 双指针
- 注意程序中的index++!!若是按照index++,则可能出现,index=3,target=4,index!=target 不会break;但是继续执行index++后,index=target,那么就会影响到退出while后的if-else!!所以改为++index,相应的target也要+1。
Code:
#include<bits/stdc++.h>
using namespace std;
int main(){
#ifndef ONLINE_JUDGE
freopen("data.txt","r",stdin);
#endif
int n,m;
scanf("%d",&n);
int a[n];
for(int i=0;i<n;i++)
scanf("%d",&a[i]);
scanf("%d",&m);
int b[m],c;
for(int i=0;i<m;i++)
scanf("%d",&b[i]);
int index=0,i=0,j=0,target=(m+n-1)/2;
while(i<n&&j<m){
c=a[i]<=b[j]?a[i++]:b[j++];
if(++index==target+1) break;
}
if(index<target+1&&i<n)
c=a[target-index+i];
else if(index<target+1&&j<m)
c=b[target-index+j];
printf("%d",c);
return 0;
}