34. Search for a Range
class Solution {
public:
vector<int> searchRange(vector<int>& nums, int target) {
vector<int> res(2,-1);
if(nums.empty())
return res;
int start=0,end=nums.size()-1;
while(start+1<end){
int mid=(end-start)/2+start;
if(nums[mid]==target){
start=mid;
end=mid;
while(start>0 && nums[start-1]==target)
start--;
while(end<nums.size()-1 && nums[end+1]==target)
end++;
res[0]=start;
res[1]=end;
return res;
}
else if(nums[mid]<target)
start=mid;
else
end=mid;
}
if(nums[start]==target){
if(nums[end]==target){
res[0]=start;
res[1]=end;
}
else{
res[0]=start;
res[1]=start;
}
}
else if(nums[end]==target){
res[0]=end;
res[1]=end;
}
return res;
}
};