import java.util.*;
public class Solution {
/**
* 二分查找
* @param n int整型 数组长度
* @param v int整型 查找值
* @param a int整型一维数组 有序数组
* @return int整型
*/
public int upper_bound_ (int n, int v, int[] a) {
int start = 0, end = n-1;
while(start < end){//含有重复元素的有序序列,找上界(也就是第一个>=给定值)的数的话,二分法就这么干,如果不含重复元素的有序序列中找上界,直接还是老模板
int mid = (start+end)/2;
if(a[mid]<v){
start = mid+1;
}else{
end = mid ;
}
}//循环结束的时候start指向的就是a[]中第一个>=v的数
return start==n-1?n:start
}
}
如果不含重复元素的有序序列中找上界,直接还是老模板
public int upper_bound_ (int n, int v, int[] a) {
int start = 0, end = n-1;
while(start <= end)
int mid = (start+end)/2;
if(a[mid]<v){
start = mid+1;
}else if(a[mid]>v){
end = mid - 1 ;
}else{
return mid;
}
}
return start;//循环结束的时候start指向的就是a[]中第一个>=v的数
}
}