GESP C++ 真题 · 逐题精解
首页 › C++五级真题 › 2026年9月 › 第6题

GESP 2026年9月 C++五级 判断题 第6题

C++五级判断题2026年9月第6题

所属知识点:查找与二分 难度要求:掌握 考频:—

若数组 a 已按升序排列,下面函数能够返回最后一个小于等于 x 的元素下标;如果不存在,则返回 -1 。
int findLastLE(const vector<int> &a, int x) {
    int l = 0, r = (int)a.size() - 1;
    int ans = -1;
    while (l <= r) {
        int mid = l + (r - l) / 2;
        if (a[mid] <= x) {
            ans = mid;
            l = mid + 1;
        } else {
            r = mid - 1;
        }
    }
    return ans;
}

正确答案:正确(√)

题目解析
当 a[mid] <= x 时记录 ans=mid 并向右继续找更大下标,否则收缩右界;循环结束 ans 即最后一个不超过 x 的下标,若不存在保持 -1,命题正确。

想系统刷完 GESP C++ 1~8 级真题,并查看每道题的逐题精讲?

进入 GESPPASS 开始练习