https://blog.csdn.net/qq_36102055/article/details/104375766
模板
// 注意:cpp 代码由 chatGPT🤖 根据我的 java 代码翻译,旨在帮助不同背景的读者理解算法逻辑。
// 本代码不保证正确性,仅供参考。如有疑惑,可以参照我写的 java 代码对比查看。
int binarySearch(vector<int>& nums, int target) {
// 一左一右两个指针相向而行
int left = 0, right = nums.size() - 1;
while(left <= right) {
int mid = (right + left) / 2;
if(nums[mid] == target)
return mid;
else if (nums[mid] < target)
left = mid + 1;
else if (nums[mid] > target)
right = mid - 1;
}
return -1;
}
https://www.acwing.com/solution/content/107848/
https://www.acwing.com/problem/content/791/
#include <iostream>
#include <cstdio>
using namespace std;
// 查找左边界
int Search_Left(int l, int r)
{
while (l < r)
{
int mid = (l + r) >> 1;
if (check(mid))
r = mid;
else
l = mid + 1;
}
return l;
}
//查找右边界
int Right_Search(int l,int r){
while(l<r) {
int mid = (l + r + 1) >> 1;
if(check(mid)) l = mid;
else r = mid - 1;
}
return l;
}
int main(void)
{
}