https://blog.nowcoder.net/d
二分 还是有点麻烦

``` java
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) {
if(a[a.length-1] < v)
return a.length+1;
int i=0,j=n-1;
while(i < j){
int mid = i + (j-i)/2;
if(a[mid] > v){
j = mid;
}else if(a[mid] < v){
i = mid+1;
}else{
if(mid == 0 || a[mid] > a[mid-1])
return mid+1;
else if(a[mid] == a[mid - 1]){
j = mid;
}
}
}
return i+1;
}
}