class Solution {
public:
vector<int> searchRange(vector<int>& nums, int target) {
int begin = 0;
int end = nums.size() - 1;
vector<int> result;
while(begin<= end){
int mid = (begin+ end)/2;
//二分查找,如果mid = target,左右端点向两边扩散
if(nums[mid] == target){
//左端点向左扩散
begin = mid ;
while(begin - 1 >= 0 && nums[begin - 1] == target )
begin = begin -1;
//右端点向右扩散
end = mid;
while(end + 1 < nums.size() && nums[end + 1] == target)
end = end + 1;
//得到区间范围
result.push_back(begin);
result.push_back(end);
return result;
}
else if (nums[mid] <target){
begin = mid + 1;
}
else end = mid - 1;
}
//如果没找到目标元素,返回-1
result.push_back(-1);
result.push_back(-1);
return result;
}
};
LeetCode刷题_c++版-34在排序数组中查找元素的第一个和最后一个位置
猜你喜欢
转载自blog.csdn.net/weixin_44343355/article/details/129020277
今日推荐
周排行