/**
* 两个数组,定义一个变量i,一个变量j,让i变量遍历a数组,b变量遍历b数组,如果i+j==k的话,判断a[i]和a[j]的大小的的得出k大的值
* 否则,i++或者j++,直到找到该值
*/
// public static int count=0;
public static void main(String[] args) {
// TODO Auto-generated method stub
int a[] = { 3, 9, 10, 11, 15, 17, 19, 20 };
int b[] = { 5, 7, 8, 9, 12, 14, 18, 21 };
// int k = 10;
int k = 0;
System.out.println(kNumber(a, b, k));
// System.out.println(count);
}
private static int kNumber(int[] a, int[] b, int k) {
// TODO Auto-generated method stub
int i = 0, j = 0;
if ((a.length + b.length) < k && k >= 0) {
return -1;
}
while (i < a.length && j < b.length) {
if (i + j == k) {
if (a[i] > b[j]) {
// System.out.println("iii"+a[i]+"jjjj"+b[j]);
return b[j];
} else {
// System.out.println("iii"+b[j]);
return a[i];
}
}
// 判断不越界
if (a[i] < b[j]) {
// System.out.println("iii"+a[i]);
// count++;
i++;
} else {
// System.out.println("jjj"+b[j]);
// count++;
j++;
}
}
if (i > a.length - 1) {
while (j < b.length) {
if (i + j == k - 1) {
return b[j];
} else {
j++;
// count++;
}
}
}
if (j > b.length - 1) {
while (i < a.length) {
if (i + j == k - 1) {
return a[i];
} else {
i++;
// count++;
}
}
}
return -1;
}
}