Loading... 在这里,我们把有序数组定义为 `nums`,`n` 是该数组的长度。 ## 搜索某一元素的左边界 ```cpp int l = 0, r = nums.size(); // 找左边界 while (l < r) { int mid = l + (r - l >> 1); if (nums[mid] >= target) r = mid; else l = mid + 1; } return l; ``` ## 搜索某一元素的右边界 ```cpp int l = 0, r = nums.size() - 1; // 找右边界 while (l < r) { int mid = l + ((r - l + 1) >> 1); if (nums[mid] <= target) l = mid; else r = mid - 1; } return l; ``` ## 基本搜索模板 ```cpp int l = 0, r = nums.size(); while (l < r) { int mid = l + (r - l >> 1); if (nums[mid] == target) return mid; if (nums[mid] < target) r = mid; else l = mid + 1; } return -1; ``` ```cpp int l = 0, r = nums.size() - 1; while (l <= r) { int mid = l + (r - l >> 1); if (nums[mid] == target) return mid; if (nums[mid] < target) r = mid - 1; else l = mid + 1; } return -1; ``` Last modification:April 7, 2022 © Allow specification reprint Support Appreciate the author AliPayWeChat Like 0 如果觉得我的文章对你有用,请随意赞赏