LeetCode: Search for a Range

来源:互联网 发布:网络测试仪器 编辑:程序博客网 时间:2024/05/16 19:00
class Solution {
public:
    int getMinRange(int A[],int n,int target){
        int low=0,hi=n-1,mid;
        while(low<=hi){
            mid = low+(hi-low)/2;
            if(A[mid]<target)
                low = mid+1;
            else if(A[mid]==target){
                if(mid==0||A[mid-1]!=target)
                    return mid;
                else
                    hi = mid-1;
            }
            else
                hi = mid-1;
        }
        return -1;
    }


    int getMaxRange(int A[],int n,int target){
        int low=0,hi=n-1,mid;
        while(low<=hi){
            mid = low+(hi-low)/2;
            if(A[mid]<target)
                low = mid+1;
            else if(A[mid]==target){
                if(mid==n-1||A[mid+1]!=target)
                    return mid;
                else
                    low = mid+1;
            }
            else
                hi = mid-1;
        }
        return -1;
    }






    vector<int> searchRange(int A[], int n, int target) {
        // Note: The Solution object is instantiated only once and is reused by each test case.
        vector<int> ans;
        ans.push_back(getMinRange(A,n,target));
        ans.push_back(getMaxRange(A,n,target));
        return ans;
    }
};
原创粉丝点击