class Solution {
public:
vector<int> searchRange(int A[], int n, int target) {
vector<int> v;
int equal,m,k;
equal = index(A,n,target);
if(equal == -1){
v.push_back(-1);
v.push_back(-1);
return v;
}else{
m = k = equal;
while(A[m - 1] == A[equal] && m > 0) m --;
while(A[k + 1] == A[equal] && k < n - 1) k ++;
v.push_back(m);
v.push_back(k);
return v;
}
}
int index(int A[],int n,int num){
int first = 0,end = n - 1,mid;
int result = -1;
while(first <= end){
mid = (first + end)/2;
if(A[mid] == num)
return mid;
else if(A[mid] > num)
end = mid - 1;
else
first = mid + 1;
}
return result;
}
};[LeetCode] Search for a Range
最新推荐文章于 2018-09-05 14:58:19 发布
本文介绍了一种高效搜索范围优化算法,通过改进二分查找过程,实现了目标值在数组中的精确定位,并扩展了搜索范围,提高了查找效率。
445

被折叠的 条评论
为什么被折叠?



