题目链接
Given an array of integers nums sorted in ascending order, find the starting and ending position of a given target value.
Your algorithm’s runtime complexity must be in the order of O(log n).
If the target is not found in the array, return [-1, -1].
Example 1:
Input: nums = [5,7,7,8,8,10], target = 8
Output: [3,4]
Example 2:
Input: nums = [5,7,7,8,8,10], target = 6
Output: [-1,-1]
vector<int> searchRange(vector<int>& nums, int target) {
if(nums.empty()) return vector <int> ({-1,-1});
int l,r;
vector <int> res;
l = 0,r = nums.size() - 1;
while(l < r){ //寻找大于等于target的最左边的值
int mid = l + r >> 1;
if(nums[mid] >= target) r = mid;
else l = mid + 1;
}
if(nums[l] != target) return vector <int> ({-1,-1});
res.push_back(l);
l = 0,r = nums.size() - 1;
while(l < r){//寻找大于等于target的最右边的值
int mid = l + r + 1 >> 1;
if(nums[mid] <= target) l = mid;
else r = mid - 1;
}
res.push_back(r);
return res;
}