解题思路:
根据二分法的算法思想,需要使用左右两个下标寻找得到的值,在本题中,第一次二分就能得到最后的值,但是输出的index是3,因此需要从找到的位置的左指针处+1;
class Solution {
public:
/**
* 二分查找
* @param n int整型 数组长度
* @param v int整型 查找值
* @param a int整型vector 有序数组
* @return int整型
*/
int upper_bound_(int n, int v, vector<int>& a) {
// write code here
int right = n-1, left = 0;
while(left <= right)
{
int mid = (left + right) / 2;
if(a[mid] > v)
{
right = mid - 1;
}else if(a[mid] < v)
{
left = mid + 1;
}else
right = mid - 1;
}
return left + 1;
}
};