题目
- 假设一个单调递增的数组里的每个元素都是整数并且是唯一的。
- 请编程实现一个函数找出数组中任意一个数值等于其下标的元素。
- 例如,在数组 [−3, −1, 1, 3, 5] 中,数字 3 和它的下标相等。
- 数据范围
数组长度 [0,100]。
- 注意:如果不存在,则返回-1。
示例
- 输入:[-3, -1, 1, 3, 5]
- 输出:3
代码
- 解法【视频讲解】
class Solution {
public:
int getNumberSameAsIndex(vector<int>& nums) {
int l = 0, r = nums.size();
int mid = l + r >> 1;
while(l < r)
{
if(nums[mid] == mid) return mid;
if(nums[mid] < mid){
l = mid + 1;
}else{
r = mid;
}
mid = l + r >> 1;
}
return mid == 0 ? -1 : mid;
}
};
代码分析
:二分思想,熟练背诵。