⚠️ 用 `lo < hi` 会怎样
下面这段二分把循环条件写成了 lo < hi,在 [13, 15, 17, 23, 24] 里找 24。运行它: def buggy(a, target): lo = 0 hi
阅读更多 →
二分死循环通常是什么原因
二分陷入死循环,通常是因为【0】。
阅读更多 →
`while lo < hi` 和 `while lo <= hi`
把 while lo <= hi 写成 while lo < hi,后果是【0】。
阅读更多 →
二分最常见的错在哪
二分写错,十有八九错在【0】。
阅读更多 →
数出它出现了几次
补全 count:用左右边界数出目标出现的次数,不存在返回 0。
阅读更多 →
再写一个右边界
补全 right_bound:和左边界只差一个方向——相等时记下来之后往右缩。
阅读更多 →
写一个左边界二分
补全 left_bound:返回目标最左边那个的下标,找不到返回 -1。
阅读更多 →
最右边那个呢
同一个数组。运行下面这段程序: def right_bound(a, target): lo = 0 hi = len(a) - 1 got = -1 while lo
阅读更多 →
最左边那个 17 在哪
数组是 [13, 15, 17, 17, 17, 23, 24]。运行下面这段程序: def left_bound(a, target): lo = 0 hi = len(a) - 1
阅读更多 →
左右边界能拿来做什么
同时求出左边界和右边界,最直接的用处是【0】。
阅读更多 →