数组

一、二分

二分法使用条件:

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)

 

 

       

posted @ 2023-11-17 13:45  我的秘密小屋  阅读(14)  评论(0编辑  收藏  举报