考虑以下 C++ 代码片段,该代码实现了一个二分查找算法,用于在一个升序排序的数组中查找目标值target,且该数组中可能包含重复的元素。算法需要找到目标值的第一个出现位置。以下关于该算法的描述,哪一项是正确的?
int binarySearchFirstOccurrence(const std::vector& nums, int target) {
int left = 0;
int right = nums.size() - 1;
int result = -1;
while (left <= right) {
int mid = left + (right - left) / 2;
if (nums[mid] == target) {
result = mid; // 找到目标值,记录其索引
right = mid - 1; // 继续在左半部分查找以确定第一个出现位置
} else if (nums[mid] < target) {
left = mid + 1;
} else {
right = mid - 1;
}
}
return result;}