skyitachi's blog二分法的两种实现 2020-04-14
前言
虽然二分搜索很简单(在无重复的有序数组上),但是也有很多值得注意的地方,而且有两种完全不同的写法(两种完全不同的功能)
lower bound
找出大于等于target的最小数组下标, 不存在的情况下返回-1
1 | func lower_bound(a []int, target int) int { |
upper bound
找出小于等于target的最大数组下标
1 | func upper_bound(a []int, target int) int { |
注意点
- 计算mid的时候不能发生溢出
- 数组下标不能越界