二分模板
解释:
对具有二义性的区间进行分类,将其分为包含待查找数的区间和不包含待查找数的区间
每次查找都去缩小待查找区间,最终使这个区间完全分成两类,最后指针r右侧的位置就是可能出现的位置,若指针r右侧的位置超出数组长度,则没找到
l表示带查找区间的左边界,r代表带查找区间的右边界
int l = 1, r = m;
while (l <= r)
{
int mid = l + r + 1 >> 1;
if (check(mid)) l = mid + 1;
else r = mid - 1;
}