若采用先计算位置,count计数直到所求位置的方法(two_point法)且出现测试点3 6 未通过,建议尝试以下测试用例。
input:
3 1 2 3
9 4 5 6 7 8 9 10 11 12
正确的output应该为:
6
若输出错误,很有可能是因为比较过程中,一个数组已经走到了尽头,这时,在数组末尾保存一个无限大的数,就可以解决此类问题,代码如下:
#include<stdio.h>
int main(){
int n1,n2;
int a1[200010],a2[200010];
scanf("%d",&n1);
for(int i = 0;i < n1;i++){
scanf("%d",&a1[i]);
}
scanf("%d",&n2);
for(int i = 0;i < n2;i++){
scanf("%d",&a2[i]);
}
a1[n1] = 0x7fffffff;
a2[n2] = 0x7fffffff;
int pos = (n1 + n2 - 1) / 2;
int count = 0,i = 0,j =0;
while(count < pos){
if(a1[i] < a2[j]) i++;
else j++;
count++;
}
if(a1[i] < a2[j]){
printf("%d",a1[i]);
}else{
printf("%d",a2[j]);
}
return 0;
}