https://cloud.tencent.com/developer/article/2074352
/* 查找大于或等于target的最小值*/
int Search_1(int *nums, int len, int target)
{
int left = 0;
int right = len - 1;
if (nums[right] < target) {
return -1;
}
while (left < right) {
// 大于等于向下取整
int mid = left + (right - left) / 2;
if (nums[mid] < target) {
left = mid + 1;
} else {
right = mid;
}
}
return left;
}
/* 查找小于或等于target的最大值 */
int Search_2(int *nums, int len, int target)
{
int left = 0;
int right = len - 1;
if (nums[left] > target) {
return -1;
}
while (left < right) {
/* 查找小于等于时向上取整,不然会造成死循环 */
int mid = left + (right - left + 1) / 2;
if (nums[mid] > target) {
right = mid - 1;
} else {
left = mid;
}
}
return left;
}