class Solution {
public:
int Left(int A[], int n, int target)
{
if (n == 0)return -1;
int left = 0;
int right = n - 1;
while (left < right)
{
int mid = left + (right - left) / 2;
if (A[mid] >= target)
right = mid;
else
left = mid + 1;
}
if (A[left] == target)return left;
else return -1;
}
int Right(int A[], int n, int target)
{
if (n == 0)return -1;
int left = 0;
int right = n - 1;
while (left <=right)
{
int mid = left + (right - left) / 2;
if (A[mid] >target)
right = mid-1;
else
left = mid + 1;
}
if (A[right] == target)return right;
else return -1;
}
vector<int> searchRange(int A[], int n, int target)
{
vector<int> result;
int Findex,Sindex;
Findex =Left(A, n, target);
Sindex =Right(A, n, target);
result.push_back(Findex);
result.push_back(Sindex);
return result;
}
};
【LeetCode】Search for a Range
最新推荐文章于 2018-09-05 14:58:19 发布