12、给定一个长度为n的有序数组nums,其中可能包含重复元素。下面的函数返回数组中某个元素target的左边界,若数组中不包含该元素,则返回 −1。例如在数组nums = [5,7,7,8,8,10] 中查找target=8,函数返回8在数组中的左边界的索引为3。则横线上应填写的代码为( )。
【答案】B
【考纲知识点】二分算法
【解析】循环中,如果 target <= nums[middle],说明目标值可能在左半部分(包括middle),因此需要更新 right。否则,目标值在右半部分,因此更新 left。
为了确保找到左边界,当 target <= nums[middle] 时,应将 right 更新为 middle 而不是 middle - 1,以防止跳过潜在的左边界位置。
正确答案是B,即 right = middle;