下面的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;
}
当 lst 中存在重复的 target 时,该函数总能返回最后一个 target 的位置,即便 lst 全由相同元素组成
当 target 小于 lst 中所有元素时,该函数会返回 0
循环条件改为 while (low <= high) 程序执行效果相同,且能提高准确性
将代码中 (low + high + 1) / 2 修改为 (low + high) / 2 效果相同