题目

  • 假设一个单调递增的数组里的每个元素都是整数并且是唯一的。
  • 请编程实现一个函数找出数组中任意一个数值等于其下标的元素。
  • 例如,在数组 [−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;
    }
};

代码分析:二分思想,熟练背诵。

题目数组中数值和下标相等的元素

最后修改:2022 年 02 月 07 日 09 : 51 AM
如果我的文章对你有用,请随意赞赏