二分搜索上下界
记录二分搜索上下界避免死循环写法
vector<int> searchRange(vector<int> nums, int target) {
int l = 0;
int r = nums.size() - 1;
vector<int> result(2, -1);
//上界
while (l <= r) {
int mid = l + (r - l) / 2;
if (nums[mid] >= target)
r = mid - 1;
else
l = mid + 1;
}
if (r >= -1 and r + 1 < nums.size() and nums[r + 1] == target)
result[0] = r + 1;
l = 0;
r = nums.size() - 1;
//下界
while (l <= r) {
int mid = l + (r - l) / 2;
if (nums[mid] > target)
r = mid - 1;
else
l = mid + 1;
}
if (l >= 1 and l <= nums.size() and nums[l - 1] == target)
result[1] = l - 1;
return result;
}