朴素二分模板,特别要注意的是输出位置从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; } };
全部评论
(0) 回帖