二分查找相关问题

无重复元素有序数组中查找是否有指定数据
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;
}
全部评论

相关推荐

04-09 09:47
门头沟学院 Java
Arbelite_:2-3k,这工资还不如去摇奶茶
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务