单选题

下面的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 效果相同

赣ICP备20007335号-2