#include <iostream>
#include <vector>
using namespace std;
int left_bound(vector<int> nums, int target) {
int left = 1, right = nums.size() - 1;
// 搜索区间为 [left, right]
while (left <= right) {
int mid = left + (right - left) / 2;
if (nums[mid] < target) {
// 搜索区间变为 [mid+1, right]
left = mid + 1;
} else if (nums[mid] > target) {
// 搜索区间变为 [left, mid-1]
right = mid - 1;
} else if (nums[mid] == target) {
// 收缩右侧边界
left = mid + 1;
}
}
// 检查出界情况
return left;
}
int main()
{
vector<int> arr={10,20,30,40,50,60,70,80,90,100};
int b;
cin>>b;
cout << left_bound(arr,b);
return 0;
}
二分查找左边界
于 2022-02-15 18:39:02 首次发布
本文详细介绍了二分查找左边界的方法,适用于已排序数组中寻找特定元素的第一个出现位置。通过实例解析算法思路,包括如何处理等于目标值的情况,以及在数组中不存在目标值时的处理方式。
3019

被折叠的 条评论
为什么被折叠?



