binary search:
class Solution {
public:
vector<int> searchRange(vector<int>& nums, int target) {
int left=0,right=nums.size()-1,mid=(left+right)/2;
vector<int> res;
res.push_back(-1);
res.push_back(-1);
if(nums[left]==target&&nums[right]==target)
{
res[0]=left;
res[1]=right;
return res;
}
if(nums[mid]==target)
{
if(nums[left]==target)
{
res[0]=left;
int i=mid;
while(nums[i+1]==nums[i])
i++;
res[1]=i;
return res;
}
else if(nums[right]==target)
{
int i=mid;
while(nums[i-1]==nums[i])
i--;
res[0]=i;
res[1]=right;
return res;
}
}
while(nums[mid]!=target&&left!=right)
{
if(nums[mid]<target)
left=mid+1;
else if(nums[mid]>target)
right=mid;
mid=(left+right)/2;
}
if(nums[mid]==target)
{
int l=mid,r=mid;
while(l>0&&nums[l-1]==nums[l])
l--;
res[0]=l;
while(r<nums.size()-1&&nums[r+1]==nums[r])
r++;
res[1]=r;
}
return res;
}
};