整数二分查找模版

二分模板

  • 算法思路:假设目标值在闭区间[l, r]中,每次区间长度缩小一半,当[l, r]时,即找到目标。

模板一

将区间划分为[l, mid][mid + 1, r]时,其更新操作为l = mid + 1r = mid,计算mid时不加1。

while (l < r) {
    int mid = l + r >> 1;
    if (check(mid)) r = mid;
    else l = mid + 1;
    return l;
}

模板二

将区间划分为[l, mid - 1][mid, r]时,其更新操作为r = mid - 1l = mid,计算mid时加1。

while (l < r) {
    int mid = l + r + 1>> 1;
    if (check(mid)) l = mid;
    else r = mid - 1;
    return l;
}

猜你喜欢

转载自www.cnblogs.com/clown9804/p/12449217.html
今日推荐