下 的 C++ 代码 于在升序数组 lst 中查找 标值 target 最后 次出现的位置。相关说法,正确的是( 面 用 目 一 )。
int binary_search_last_occurrence(const vector<int>& lst, int target) {
if (lst.empty()) return -1;
int low = 0, high = lst.size() - 1;
while (low < high) {
int mid = (low + high + 1) / 2;
if (lst[mid] <= target) {
low = mid;
} else {
high = mid - 1;
}
}
if (lst[low] == target)
return low;
else
return -1;
}
- A. 当 lst 中存在重复的 target 时,该函数总能返回最后 个 target 的位置,即便 lst 全由相同元素组成 一
- B. 当 target 于 lst 中所有元素时,该函数会返回 0 小
- C. 循环条件改为 while (low <= high) 程序执 效果相同,且能提 准确性 行 高
- D. 将代码中 (low + high + 1) / 2 修改为 (low + high) / 2 效果相同
正确答案:A