#3554. [GESP202512 五级 C++] 第 11 题
[GESP202512 五级 C++] 第 11 题
下面代码尝试在有序数组中查找第一个大于等于 x 的元素位置。如果没有大于等于 x 的元素,返回 arr.size()。以下说法正确的是( )。
int lower_bound(vector<int>& arr, int x) {
int l = 0, r = arr.size();
while(l < r) {
int mid = l + (r - l) / 2;
if(arr[mid] >= x) r = mid;
else l = mid + 1;
}
return l;
}
{{ select(1) }}
- 上述代码逻辑正确
- 上述代码逻辑错误,
while循环条件应该用l <= r - 上述代码逻辑错误,
mid计算错误 - 上述代码逻辑错误,边界条件不对