//寻找两个有序数组中的第K小的数
public int getKth(int[] nums1,int l1,int r1,int[] nums2,int l2, int r2,int k){
//计算区间内的长度
int len1 = r1-l1+1;
int len2 = r2-l2+1;
//某个数组用完了 直接返回另外一个数组的start+k-1的下标值
if(len1==0) return nums2[l2+k-1];
if(len2==0) return nums1[l1+k-1];
//寻找第1小的数,直接返回两个数组起点的最小值
if(k==1) return Math.min(nums1[l1],nums2[l2]);
//寻找两个数组中第k/2小的数(当k/2大于数组的长度时,取数组的最后一个元素)
int i = l1 + Math.min(len1,k/2)-1;
int j = l2 + Math.min(len2,k/2)-1;
//淘汰 小的一边 ,小的一边大小为k/2;
if(nums1[i]<nums2[j]){
return getKth(nums1,i+1,r1,nums2,l2,r2,k-(i-l1+1));
}else{
return getKth(nums1,l1,r1,nums2,j+1,r2,k-(j-l2+1));
}
}