算法一:暴力枚举$O(n)$
class Solution {
public:
int getNumberSameAsIndex(vector<int>& nums) {
for(int i=0;i<nums.size();i++){
if(i == nums[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 >> 1;
if(nums[mid] > mid) r = mid - 1;
else l = mid;
}
if(nums[l] == l) return l;
return -1;
}
};