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)); }