排序数组中查找某元素第一和最后一个位置_数组

 

 

详细思路

找到mid,如果正好是target,两头扩散输出答案
 
精确定义
left左数组第一个
mid左数组最后一个右数组第一个
right右数组最后一个
i判断好了的左边
j判断好了的右边
class Solution {
public:
    vector<int> searchRange(vector<int>& nums, int target) {
        int n=nums.size();
        if(n==0)return {-1,-1};
        int left=0,right=n-1;
        while(left<=right){
            int mid=left+(right-left)/2;
            if(nums[mid]==target){
                int i=mid,j=mid;
                while(i-1>=0&&nums[i-1]==target)i--;
                while(j+1<=n-1&&nums[j+1]==target)j++;
                return {i,j};
            }
            else if(target<nums[mid])right=mid-1;
            else if(target>nums[mid])left=mid+1;
        }
        return {-1,-1};
    }
};