Почему этот код недействителен для всех тестовых наборов, только пропуская некоторые из них?
public class Solution {
public double findMedianSortedArrays(final List<Integer> a, final List<Integer> b) {
int n1=a.size();
int n2=b.size();
if(n1>n2)
findMedianSortedArrays(b,a);
if(n1==0 && n2==0)
return 0;
if(n1==0)
{
if(n2%2==0)
{
return (double)(b.get((b.size()-1)/2)+b.get(b.size()/2))/2;
}
return (double)b.get(b.size()/2);
}
int low=0;
int high=n1;
while(low<high)
{
int partitionX=(low+high)/2;
int partitionY=(n1+n2+1)/2-partitionX;
int maxLeftX=((partitionX==0)?Integer.MIN_VALUE:a.get(partitionX-1));
int minRightX=((partitionX==n1)?Integer.MAX_VALUE:a.get(partitionX));
int maxLeftY=((partitionY==0)?Integer.MIN_VALUE:b.get(partitionY-1));
int minRightY=((partitionY==n2)?Integer.MAX_VALUE:b.get(partitionY));
if(maxLeftX<minRightY && maxLeftY<minRightX)
{
if((n1+n2)%2==0)
{
return (double)(Math.max(maxLeftX,maxLeftY)+Math.min(minRightX,minRightY))/2;
}
return (double)Math.max(maxLeftX,maxLeftY);
}
else if(maxLeftX>minRightY)
high=partitionX-1;
else
low=partitionX+1;
}
return 0;
}
}