lintcode-搜索区间-61

给定一个包含 n 个整数的排序数组,找出给定目标值 target 的起始和结束位置。

如果目标值不在数组中,则返回[-1, -1]


样例

给出[5, 7, 7, 8, 8, 10]和目标值target=8,

返回[3, 4]

class Solution {
  
public:
    
    int LowerBound(vector<int> &A,int target){
        int y=A.size();
        int x=0;
        while(x<y){
            int mid=x+(y-x)/2;
            if(target>A[mid])
                x=mid+1;
            else
                y=mid;
        }
        return x;
    }
    vector<int> searchRange(vector<int> &A, int target) {
        vector<int> v(2,-1);
        if(A.empty())
            return v;
        bool f=false;
        int  i=LowerBound(A,target);
        int  end=i;
        
        while(A[end]==target){
            ++end;
            f=true;
        }
        if(f){
            v[0]=i;
            v[1]=end-1;
        }
        return v;
    }
};


你可能感兴趣的:(lintcode-搜索区间-61)