题目描述
题目三:数组中数值和下标相等的元素
假设一个单调递增的数组里的每个元素都是整数并且是唯一的。请编程实现一个函数,找出数组中任意一个数值等于其下标的元素。例如,在数组{-3,-1,1,3,5}中,数字3和它的下标相等。
实现
public class C53_array_GetNumberSameAsIndex {
private static int getNumSameAsIndex(int[] arr) {
if (arr == null || arr.length == 0) {
return -1;
}
int start = 0;
int end = arr.length - 1;
while (start <= end) {
int mid = (start + end) / 2;
if (arr[mid] == mid) {
return mid;
} else if (arr[mid] < mid) {
start = mid + 1;
} else {
end = mid - 1;
}
}
return -1;
}
}
Test
public static void main(String[] args) {
int[] arr = {-3, -1, 1, 3, 5};
System.out.println(getNumSameAsIndex(arr));
}