版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/l718531794/article/details/85111117
题目地址:https://leetcode-cn.com/problems/find-first-and-last-position-of-element-in-sorted-array/
思路:两次二分
AC代码:
class Solution {
public:
vector<int> searchRange(vector<int>& nums, int target) {
int n = nums.size();
int l = 0;
int r = n-1;
int ans_l = 0x3f3f3f3f;
int ans_r = -1;
while(l<=r){
int mid = (l+r)/2;
if(nums[mid] == target){
ans_l = min(mid,ans_l);
r = mid-1;
}else if(nums[mid]>target){
r = mid-1;
}else if(nums[mid]<target){
l = mid+1;
}
}
if(ans_l == 0x3f3f3f3f)
ans_l = -1;
l = 0;
r = n-1;
while(l<=r){
int mid = (l+r)/2;
if(nums[mid] == target){
ans_r = max(mid,ans_r);
l = mid+1;
}else if(nums[mid]>target){
r = mid-1;
}else if(nums[mid]<target){
l = mid+1;
}
}
vector<int>ans;
ans.push_back(ans_l);
ans.push_back(ans_r);
return ans;
}
};