package project;
/**
* 题目:数组中数值和下标相等的元素。
* eg:{-5,-3,0,3,5},数字3和它的下标相等
* @author hexiaoli
* 思路:剑指offer
* 1)二分法。假设数字的值位m,若m>index,则在左边,否则在右边。
*/
public class Main {
public static int getNumberSameAsIndex(int[] array) {
// 边界
if (array == null || array.length <= 0 ) {
return -1;
}
//设置左右指针
int length =array.length;
int left = 0;
int right = length-1;
while (left <=right) {
int mid = (left+right)>>1;
if(array[mid]==mid) {
return mid;
}else if(array[mid]>mid) {
right=mid-1;
}else {
left=mid+1;
}
}
return -1;
}
public static void main(String[] args) {
int[] array = {-5,-3,0,3,5};
System.out.println(getNumberSameAsIndex(array));
int[] array1 = {-5,-3,0,1,3};
System.out.println(getNumberSameAsIndex(array1));
int[] array2 = {};
System.out.println(getNumberSameAsIndex(array2));
}
}