#3455. [GESP202412 五级 C++] 第 12 题

[GESP202412 五级 C++] 第 12 题

给定一个长度为 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;
}

{{ select(1) }}

  • right = middle - 1;
  • right = middle;
  • right = middle + 1;
  • 以上都不对