Search

二分查找的通用模板

模板 1:

boolean check(x int) {}

func search(left, right int) int {
    for left < right {
        mid := (left + right) >> 1
        if check(mid) {
            right = mid
        } else {
            left = mid + 1
        }
    }
    return left
}

模板 2:

boolean check(x int) {}

func search(left, right int) int {
    for left < right {
        mid := (left + right + 1) >> 1
        if check(mid) {
            left = mid
        } else {
            right = mid + 1
        }
    }
    return left
}

最后更新于

这有帮助吗?