第28575题 单选题
以下代码片段中,能正确在升序整数数组中找到第一个大于等于目标值target的元素下标的是?

例如对于升序数组[1,2,2,3,4],当目标值target=2时,正确结果应为下标1。以下四个选项均为Java实现的二分查找代码:

A
public int findFirstGE(int[] nums, int target) {
    int left = 0, right = nums.length - 1;
    while(left <= right) {
        int mid = left + (right - left)/2;
        if(nums[mid] >= target) right = mid -1;
        else left = mid +1;
    }
    return left;
}
B
public int findFirstGE(int[] nums, int target) {
    int left = 0, right = nums.length - 1;
    while(left < right) {
        int mid = left + (right - left)/2;
        if(nums[mid] >= target) right = mid;
        else left = mid +1;
    }
    return left;
}
C
public int findFirstGE(int[] nums, int target) {
    int left = 0, right = nums.length -1;
    int ans = -1;
    while(left <= right) {
        int mid = left + (right - left)/2;
        if(nums[mid] == target) {
            ans = mid;
            left = mid +1;
        } else if(nums[mid] < target) left = mid +1;
        else right = mid -1;
    }
    return ans;
}
D
public int findFirstGE(int[] nums, int target) {
    int left =0, right = nums.length -1;
    while(left < right) {
        int mid = left + (right - left +1)/2;
        if(nums[mid] >= target) left = mid;
        else right = mid -1;
    }
    return left;
}
程序运行统计
暂无判题统计
提交0次 正确率0.00%
答案解析