题目描述
请实现有重复数字的有序数组的二分查找。 输出在数组中第一个大于等于查找值的位置,如果数组中不存在这样的数,则输出数组长度加一。 示例1 输入
5,4,[1,2,4,4,5]
输出 3
代码
import java
.util
.*
;
public class Solution {
public static int upper_bound_
(int n
, int v
, int[] a
) {
int left
= 0, right
= n
-1;
int middle
= (right
+left
)/2;
int result
= n
+1;
while(left
<=right
){
if(a
[middle
]>=v
){
right
= middle
-1;
result
= middle
+1;
}else{
left
= middle
+1;
}
middle
= (left
+right
)/2;
}
return result
;
}
}
转载请注明原文地址:https://tech.qufami.com/read-13603.html