题解
昨天,没做,今天要做两道题了。。。。
很简单 二分 之前JAVA老师也让用JAVA写过,虽然忘了,但是思路还是一样的。
代码
class Solution {
public:
vector<int> searchRange(vector<int>& nums, int target) {
vector<int> a;
int n = nums.size();
if(n == 0){
a.push_back(-1);
a.push_back(-1);
return a;
}
int l = 0,r = n - 1;
while(l <= r){
int mid = (l+r)/2;
if(nums[mid] == target){
int left = mid;
int right = mid;
int ans;
for(int i = left; i >= 0; i--){
if(nums[i] == target){
ans = i;
}
}
a.push_back(ans);
for(int i = right; i < n; i++){
if(nums[i] == target){
ans = i;
}
}
a.push_back(ans);
break;
}else if(nums[mid] > target){
r = mid - 1;
}else{
l = mid + 1;
}
}
if(a.empty()){
a.push_back(-1);
a.push_back(-1);
}
return a;
}
};

这篇博客介绍了如何使用二分查找算法在给定整数数组中找到目标值的第一个和最后一个位置。博主通过Java代码展示了实现过程,包括在找到目标值时如何更新边界并返回结果。即使忘记了具体的代码,博主仍然记得基本的二分查找思路。

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



