1.二分查找(Ologn)

使用场景:条件:1.有序或者可以转化为有序的。2.可以分成两个区域,一个满足,一个不满足。 联想:3.最值问题(二分答案):求最小最大问题,时间,空间,容量什么的,就往上面想一想 4.还有那种要小于等于某个值或大于等于某个值,本质也是最值问题,不过更直观了

重点:在求最小或最小的时候写≤(≥),什么时候写<(>)呢,固定套路要记住:如果你的if条件要更新right=mid,那么就是要写≤(≥)了,如果要更新left=mid,那么就不要带=,只要<(>),然后最后返回的是right,最大或最多要反之,然后最后返回的是left

1.求≥就是x,>就是求(x+1),而<与≥对应,所以就是求完x再减1,而≤是与>x对应,就是求完(x+1)再-1。 2.上取整是(a-1)/(b+1),下取整是(a+b-1)/b

简单的二分查找

这是比较复杂的情况,二分查找也会出现两个数组的关系,不过他们是一般求范围,或者≥,与枚举右维护左相比的话,那个是相加等于关系然后哈希替换

2.二分答案(OnlogM)

求最大跟最小反过来了,≤是left,最后返回的也是left

关于时间复杂度:n是数组的长度,因为在二分查找里面不断遍历n,M是上下界之差,差不多可以认为是right的值,要进行二分查找,所以是n*logM