leetcode每日一题 2021.3.1
分别采用二分查找找到数组中出现的最左边以及最右边。
class Solution {
public:
vector<int> searchRange(vector<int>& nums, int target) {
//查找最左边
int i=0;
int j=int(nums.size())-1;
int ans=nums.size();
while(i<=j)
{
int mid = (i+j)/2;
if(target<nums[mid])
{j=mid-1;
ans=mid;}
else if(target>nums[mid])
i=mid+1;
else
{j=mid-1;
ans=mid;}
}
int left=ans;
//查找最右边
ans=nums.size();
i=0;
j=nums.size()-1;
while(i<=j)
{
int mid =(i+j)/2;
if(target<nums[mid])
{j=mid-1;
ans=mid;}
else if(target>nums[mid])
i=mid+1;
else
i=mid+1;
}
int right=ans-1;
//返回输出采用的vector<int>{}
if(left<=right && right<nums.size() && nums[left]==target && nums[right]==target)
return vector<int>{left, right};//一些限制的条件
return vector<int>{-1, -1};
}
};
作者:junluoyu
链接:https://leetcode-cn.com/problems/find-first-and-last-position-of-element-in-sorted-array/solution/liang-ci-er-fen-cha-zhao-fen-bei-zhao-da-us5t/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。