题目
数组中数值和下标相等的元素
假设一个单调递增的数组里每个元素都是整数并且是唯一的。请编程实现一个函数,找出数组中任意一个数值等于其下标的元素。例如,在数组{-3,-1,1,3,5}中,数字3和它的下标相等。
分析
这道题的思想和前面两篇文章的题目思想一样。基于数组有序的前提条件,我们选择使用二分查找的方式。
代码
public static int findNumberSameAsIndex(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-start)>>1);
if(arr[mid] == mid) {
return mid;
}else if(arr[mid] >mid){
end = mid - 1;
}else {
start = mid+1;
}
}
return -1;
}