//在有序的 a[1]~a[n] 中找到第一个大于等于 x 的位置
int l = 1;
int r = n;
int ans = n + 1;
while (l <= r)
{
int mid = (l + r) / 2;
if (a[mid] >= x)
{
ans = mid;
r = mid - 1;
}
else
l = mid + 1;
}
lower_bound(a + 1, a + n + 1, x) 返回第一个大于等于 x 的位置(指针/迭代器)
lower_bound(a + 1, a + n + 1, x) - a 可以得到对应的下标。
如果找不到,会返回最后一个位置的后一个位置,即 a + n + 1。
upper_bound(a + 1, a + n + 1, x) 返回第一个大于 x 的位置(指针/迭代器)
upper_bound(a + 1, a + n + 1, x) - a 可以得到对应的下标。
如果找不到,会返回最后一个位置的后一个位置,即 a + n + 1。
binary_search(a + 1, a + n + 1, x) 返回一个布尔值,表示能否查找到 x
数组要有序!!!//在有序的 a[1]~a[n] 中找到第一个大于等于 x 的位置int l = 1;int r = n;int ans = n + 1;while (l <= r){ int mid = (l + r) / 2; if (a[mid] >= x) { ans = mid; r = mid - 1; } else l = mid + 1;}lower_bound(a + 1,