时间复杂度(O(log(n))),思想,二分查找,
class Solution {
public:
vector<int> searchRange(vector<int>& nums, int target) {
vector<int> vec;
int index = triSearch(nums,0,nums.size()-1,target);
if(index==-1){
vec.push_back(-1);vec.push_back(-1);
return vec;
}
int start = index;
int end = index;
for(int i=index-1;i>=0;--i)
if(nums[i]==target)start = i;
else break;
for(int j=index+1;j<nums.size();++j)
if(nums[j]==target)end = j;
else break;
vec.push_back(start);
vec.push_back(end);
return vec;
}
int triSearch(vector<int> nums,int start,int end,int k){
while(start<=end)
if(nums[(start+end)/2]==k)return (start+end)/2;
else if(nums[(start+end)/2]>k) end = (start+end)/2-1;
else start = (start+end)/2+1;
return -1;
}
};