题目描述
blablabla
class Solution {
public:
int getNumberSameAsIndex(vector<int>& nums) {
if (nums.empty()) return -1;
int l = 0, r = nums.size();
while(l < r) {
int mid = l + r >> 1;
if (nums[mid] == mid) return mid;
if (nums[mid] > mid) r = mid;
else l = mid + 1;
}
return -1;
}
};
class Solution {
public:
int getNumberSameAsIndex(vector<int>& nums) {
if (nums.empty()) return -1;
int l = 0, r = nums.size() - 1;
while (l < r) {
int mid = l + r >> 1;
if (nums[mid] == mid) return mid;
if (nums[mid] > mid) r = mid;
else l = mid + 1;
}
if (nums[l] == l) return l;
return -1;
}
};
循环条件写 l <= r 就不用再写一个if
r = nums.size(); 应该给一个什么解释 比较合理 老哥
这就是一个边界问题,当一个元素的时候无法进入循环体中。 也可以在循环体外单独判断一下,见我上面的修改的代码。