57.数组中数值和下标相等的元素

假设一个单调递增的数组里的每个元素都是整数并且是唯一的。

请编程实现一个函数找出数组中任意一个数值等于其下标的元素。

例如,在数组 [−3,−1,1,3,5] 中,数字 3 和它的下标相等。

数据范围:

数组长度 [1,100]。

样例:

输入:[-3, -1, 1, 3, 5]
输出:3

注意: 如果不存在,则返回-1

代码:

class Solution {
    public int getNumberSameAsIndex(int[] nums) {
        //初始化二分查找的左右指针
        int l = 0,r = nums.length-1;
        //使用二分查找来寻找nums[i] = i 的元素
        while(l<r){
            //计算中间位置
            int mid = l+r>>1;
            //如果中间元素的值大于等于其索引,说明目标在左半部分
            if(nums[mid]>=mid)r = mid;
            //否则目标在右半部分
            else l = mid+1;
        }
        //检查找到的位置是否满足条件,返回满足条件的索引
        if(nums[l] == l)return l;
        //没有找到满足条件的元素则返回-1
        else return -1;
    }
}
posted @ 2025-05-30 12:57  回忆、少年  阅读(10)  评论(0)    收藏  举报