1. 大概意思,给一个int型有序数组(比如:[1,3,5,8,9]),给出其中一个元素找出他的下标(最优方案)
答案:这个用折半查找就行
2. 大概意思,给一个int类型的数组(比如[1,2,4,9,2,4,1]),找出其中对称的那个数值,比如,前面的数组,就是9,
给你补充下 第2个题目应该是
找int数组平衡数的index(平衡数是指它前面数字之和等于后面数字之和)
答案:
public static int position(int a[], int n, int l, int r) {
if(l <= r) {
int m = (l + r) / 2;
if(a[m] > n) {
return position(a, n, l, m - 1);
}
else if(a[m] == n) {
return m;
}
else if(a[m] < n) {
return position(a, n, m + 1, r);
}
}
return -1;
}
public static void main(String args[]) {
int a[] = {1, 2, 3, 4, 5, 6, 7};
System.out.println(position(a, 7, 0, 6));
}
public static int balance(int a[]) {
int sum = 0;
for(int i = 0; i < a.length; i++) {
sum += a[i];
}
int n = 0;
for(int i = 0; i < a.length; i++) {
if(sum - 2 * n == a[i]) {
return a[i];
}
n += a[i];
}
return 0;
}
public static void main(String args[]) {
int a[] = {1,2,4,9,2,4,1};
System.out.println(balance(a));
}