第一遍找左边第一个目标值,第二遍找大于目标值的第一个值得位置
class Solution {
public:
int findIndex(vector<int>& nums,int target,bool flag)
{
int len=nums.size();
int left=0;
int right=len;
while(left<right)
{
int mid=(left+right)/2;
if(nums[mid]>target||(flag)&&nums[mid]==target)
{
right=mid;
}
else
{
left=mid+1;
}
}
return left;
}
vector<int> searchRange(vector<int>& nums, int target) {
vector<int>result={-1,-1};
int left_index=findIndex(nums,target,true);
if(left_index==nums.size()||nums[left_index]!=target)return result;
int right_index=findIndex(nums,target,false);
result[0]=left_index;
result[1]=right_index-1;
return result;
}
};