@@ -272,10 +272,31 @@ function binarySearchLeft(nums, target) {
272272
273273##### C++
274274
275- 暂时空缺,欢迎 [ PR] ( https://github.com/leetcode-pp/leetcode-cheat/pulls )
276275
277276``` cpp
278-
277+ int binarySearchLeft (vector<int >& nums, int target) {
278+ // 搜索区间为 [ left, right]
279+ int left = 0, right = nums.size() - 1;
280+ while (left <= right) {
281+ int mid = left + ((right - left) >> 1);
282+ if (nums[ mid] == target) {
283+ // 收缩右边界
284+ right = mid - 1;
285+ }
286+ if (nums[ mid] < target) {
287+ // 搜索区间变为 [ mid+1, right]
288+ left = mid + 1;
289+ }
290+ if (nums[ mid] > target) {
291+ // 搜索区间变为 [ left, mid-1]
292+ right = mid - 1;
293+ }
294+ }
295+ // 检查是否越界
296+ if (left >= nums.size() || nums[ left] != target)
297+ return -1;
298+ return left;
299+ }
279300```
280301
281302### 寻找最右边的满足条件的值
@@ -380,10 +401,30 @@ function binarySearchRight(nums, target) {
380401
381402##### C++
382403
383- 暂时空缺,欢迎 [ PR] ( https://github.com/leetcode-pp/leetcode-cheat/pulls )
384-
385404``` cpp
386-
405+ int binarySearchRight (vector<int >& nums, int target) {
406+ // 搜索区间为 [ left, right]
407+ int left = 0, right = nums.size() - 1;
408+ while (left <= right) {
409+ int mid = left + ((right - left) >> 1);
410+ if (nums[ mid] == target) {
411+ // 收缩左边界
412+ left = mid + 1;
413+ }
414+ if (nums[ mid] < target) {
415+ // 搜索区间变为 [ mid+1, right]
416+ left = mid + 1;
417+ }
418+ if (nums[ mid] > target) {
419+ // 搜索区间变为 [ left, mid-1]
420+ right = mid - 1;
421+ }
422+ }
423+ // 检查是否越界
424+ if (right < 0 || nums[ right] != target)
425+ return -1;
426+ return right;
427+ }
387428```
388429
389430### 寻找最左插入位置
0 commit comments