【牛客题霸每日一题】NC105 二分查找 C++题解
朴素二分模板,特别要注意的是输出位置从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 l = 0, r = n - 1;
while(l <= r) {
int mid = l + (r - l) / 2;
if(a[mid] >= v) {
r = mid - 1;
} else {
l = mid + 1;
}
}
if(a[l] >= v) return l + 1;
return n + 1;
}
};
查看10道真题和解析
基恩士成长空间 442人发布