【题目描述】
【思路】
二分
下标: 0 1 2 3 4
数值:-3, -1, 1, 3, 5
假设目标是x,可以发现左边元素值小于下标 ,右边元素大于下标。
class Solution {
public int getNumberSameAsIndex(int[] nums) {
if(nums == null || nums.length == 0) return -1;
int l = 0, r = nums.length - 1;
while(l < r){
int mid = l + r + 1>> 1;
//目标在右区间
if( nums[mid] <= mid) l = mid;
else r = mid - 1;
}
if( l != nums[l] ) return -1;
return l;
}
}