class Solution {
public:
int right(vector<int>& nums, int target){
int begin=0;
int end=nums.size()-1;
while(begin<=end){
int mid=(begin+end)/2;
if(target==nums[mid]){
if(mid==nums.size()-1||nums[mid+1]>target){
return mid;
}
begin=mid+1;
}
else if(target<nums[mid])
end=mid-1;
else if(target>nums[mid])
begin=mid+1;
}
return -1;
}
int left(vector<int>& nums, int target){
int begin=0;
int end=nums.size()-1;
while(begin<=end){
int mid=(begin+end)/2;
if(target==nums[mid]){
if(mid==0||nums[mid-1]<target){
return mid;
}
end=mid-1;
}
else if(target<nums[mid])
end=mid-1;
else if(target>nums[mid])
begin=mid+1;
}
return -1;
}
vector<int> searchRange(vector<int>& nums, int target) {
vector<int>result;
result.push_back(left(nums,target));
result.push_back(right(nums,target));
return result;
}
};
leetcode 34 Find First and Last Position of Element in Sorted Array C++
最新推荐文章于 2022-02-20 18:45:41 发布