题目
34. Find First and Last Position of Element in Sorted Array
思路
二分,注意结果是取l还是r,这样可以求出大于target的第一个和小于target的第一个
代码
class Solution {
public:
vector<int> searchRange(vector<int>& nums, int target) {
vector<int> v;
int n=nums.size();
if(n==0 || target>nums[n-1] || target<nums[0]){
v.push_back(-1);
v.push_back(-1);
return v;
}
int l=0,r=n-1,mid;
while(l<=r){
mid=(l+r)/2;
if(nums[mid]>=target)r=mid-1;
else l=mid+1;
}
if(nums[r+1]==target)v.push_back(r+1);
else v.push_back(-1);
l=0;r=n-1;
while(l<=r){
mid=(l+r)/2;
if(nums[mid]<=target)l=mid+1;
else r=mid-1;
}
if(l!=0&&nums[l-1]==target)v.push_back(l-1);
else v.push_back(-1);
return v;
}
};
本文介绍了一种使用二分查找算法在已排序数组中寻找目标元素及其相应边界位置的方法。通过递归地缩小搜索区间,找到大于和小于目标值的第一个元素位置。适用于解决编程问题,如数组操作和数据结构查询。
294

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



