class Solution {
public:
vector<int> searchRange(int A[], int n, int target) {
vector<int> result;
result.push_back(leftBound(A,n,target));
result.push_back(rightBound(A,n,target));
return result;
}
int leftBound(int A[], int n, int target)
{
int ans = -1;
int begin = 0, end = n-1;
while(begin <= end)
{
int mid = begin + (end- begin )/2;
if(A[mid] >= target)
{
ans = mid;
end = mid-1;
}
else
{
begin = mid+1;
}
}
if(ans >= 0 && A[ans] == target)
return ans;
else
return -1;
}
int rightBound(int A[], int n, int target)
{
int ans = -1;
int begin = 0, end = n-1;
while(begin <= end)
{
int mid = begin + (end-begin)/2;
if(A[mid] <= target)
{
begin = mid +1;
ans = mid;
}
else
end = mid-1;
}
if(ans >= 0 && A[ans] == target)
return ans;
return -1;
}
};
leetcode:Search for a Range
最新推荐文章于 2022-10-14 22:00:00 发布