最简单的方法就是直接遍历数组即可
时间复杂度为O(n)
class Solution {
public:
int getNumberSameAsIndex(vector<int>& nums) {
for(int i = 0; i < nums.size(); i++)
if(nums[i] == i)
return i;
return -1;
}
};
以为本题说了数组单调递增
我们就可以利用单调性来找答案,时间复杂度O(logn)
class Solution {
public:
int getNumberSameAsIndex(vector<int>& nums) {
int l = 0, r = nums.size() - 1;
while(l < r){
int mid = l + r >> 1 ;
if(nums[mid] >= mid) r = mid;
else l = mid + 1 ;
}
if(nums[l] == l) return l;
else return -1;
}
};