数组
一、二分
二分法使用条件:
1、要有序。
2、无重复的数。
二分法算细节:
二分有不变量和变量。变量的改变要始终遵循不变量的规则。
区间的定义就是不变量。要在二分查找的过程中,保持不变量,就是在while寻找中每一次边界的处理都要坚持根据区间的定义来操作,这就是循环不变量规则。
三种写法。
最经典也是最基础的是左闭右闭区间。
注意三个要点,以左闭右闭为例,其他同理。
1、左闭右闭区间所以l=0,r=len-1;
2、因为l和r都能取到所以l==r有意义,所以while循环里面要写明l<=r;
3、更新时,因为区间左闭右闭,所以边界更新时l=mid+1/r=mid-1。
写的时候注意区间,注意以上三点则左闭右闭,左闭右开都可以成功写出。但左开右闭,如果我们数据从数组位置0存放,不能取l=-1,所以出问题。数组从1位置存放就可以了。
按照上面这种思路,把握不变量不用考虑特殊情况,自己乱写可能也能过,但要考虑边界条件很多。
二分法还可以用来寻找区间。
34. 在排序数组中查找元素的第一个和最后一个位置 - 力扣(LeetCode)