GESP 五级 · GESP 202412 C++ 五级 第 12 题

选择题 · 答案 B · 考点:二分查找

← 整套速查表 GESP 五级 全部真题

题目

给定一个长度为 $n$ 的有序数组 nums,其中可能包含重复元素。下面的函数返回数组中某个元素 target 的左边界,若数组中不包含该元素,则返回 $-1$。例如在数组 nums = [5,7,7,8,8,10] 中查找 target=8,函数返回 $8$ 在数组中的左边界的索引为 $3$。则横线上应填写的代码为( )。

int getLeftBoundary(vector<int>& nums, int target) {
    int left = 0;
    int right = nums.size() - 1;

    while (left < right) {
        int middle = left + ((right - left) / 2);
        if (target <= nums[middle])
            ________________________  // 在此处填入代码
        else
            left = middle + 1;
    }

    return nums[left] == target ? left : -1;
}
答案:B

考点

二分查找 讲解 →二分查找 真题汇总 →

解题思维

根据上下文和C++语法规则确定空缺处应填的内容,关注函数调用参数、表达式和返回值类型。

常见错误

填空时注意语法完整性:分号、括号匹配、函数参数类型和个数、返回值类型。

详细解析(节选)

【考点】二分查找(找左边界)|重复元素处理|循环终止条件

1. 🎯 考纲定位

GESP 五级算法模块「二分查找」典型题型。命题人专门卡住只会写「找任意位置」基础二分的学生——五级要求的就是处理重复元素时的边界收缩,这是四级考不到的进阶细节。

同考点真题

在 OI伴学 里做这道题
登录后可计时作答、查看完整六段式解析,并按你的错题自动生成同类练习。
去刷题先做一次 AI 学情诊断