无重复元素有序数组中查找是否有指定数据
public boolean find(int[] nums, int target){
    int l = 0;
    int r = nums.length;
    while(l <= r){
        int mid = (l + r) >> 1;
        if (mid > target){
            r = mid - 1;
        }else if (mid < target){
            l = mid + 1;
        }else {
            return true;
        }
    }
    return false;
}

有重复元素有序数组中查找是否有指定数据,如果有,返回最指定元素最后一个下标,如果没有,返回不大于目标值的最后一个元素下标, 如果没有不大于目标值的元素,返回-1。
public int find(int[] nums, int target){
    int res = -1;
    int l = 0;
    int r = nums.length;
    while (l <= r) {
        int mid = (l + r) >> 1;
        if (mid > target){
            r = mid - 1;
        }else {
            l = mid + 1;
            res = mid;
        }
    }
    return res;
}
有重复元素有序数组中查找是否有指定数据,如果有,返回最指定元素第一个下标,如果没有,返回不小于目标值的第一个元素下标, 如果没有不小于目标值的元素,返回-1。
public int find(int[] nums, int target){
    int res = -1;
    int l = 0;
    int r = nums.length;
    while (l <= r) {
        int mid = (l + r) >> 1;
        if (mid >= target){
            r = mid - 1;
            res = mid;
        }else {
            l = mid + 1;
        }
    }
    return res;
}