Find the kth smallest element in two sorted array
public int kthSmallestElem(int[] num1,int[] num2,int k){
/*
* 1) num1 length = 0 , num2 length > 0
* 2) num2 length = 0 , num1 length > 0
* 3) both num1 and num2 length =0
*/
int len1 = num1.length;
int len2 = num2.length;
if(len1 > len2 ){
return kthSmallestElem(num2,num1,k);
}
if(len1 ==0){
return num2[k-1];
}
// recursion edge
if(k==1){
return Math.min(num1[0], num2[0]);
}
//m+n=k
int m = Math.min(k/2,len1);
int n = k-m;
if(num1[m-1]<num2[n-1]){
return kthSmallestElem(Arrays.copyOfRange(num1, m, len1),num2,k-m);
}
else if(num1[m-1]>num2[n-1]){
return kthSmallestElem(num1,Arrays.copyOfRange(num2, n, len2),k-n);
}
else{
return num1[m-1];
}
}