DAY3 二分总结智灵基础班
二分要(前提条件)
对猜数字得到二分查找有三种情况
上面是完成之后的解释
上面是最后的完整版
👆是上面二分的循环条件
解决找第一个x的问题
图示:
的是找第一次出现x的问题与上面讲的二分的区别
if判断是为了防止出现没有的情况
此问题的另一种方法
与上面的略有不同
找到最后一次出现x的位置
各类取整
讲解(向上取整):
众所周知,系统进行整数计算时是自动向下取整的
这里,我们以 /4 为例:
7/4=1.75 ,向上取整 =2
但是程序是自动向下取整,就算出来 =1
这时,我们就想:如果给 7 加上除数 4-1 ,就是给 7 加上 3 ,就 =10
用 10/4 , =2.5 ,默认向下取整,即为 2 ;
再试一个数:比如 8 , 8 原本 /4=2 ,向上取整之后应该还是 2
给 9 加上 3 , =11
11/4=2.75 ,自动向下取整, =2
由此,我们推出公式: ceil(\frac {y} {x})=\frac {[y+(x-1)]} {x}=\frac {(y+x-1)} {x}
两种方法的对比
写起来最简单但是理解起来最难的方法的方法
这里是为了在计算mid时出现 L<1e9,R<1e9,mid<1e9 但是 L+R>1e9 导致溢出的情况对此,我们要用像上图的解决方案
下面是图片里公式的详细推导过程:
\frac {L+R} {2}=\frac {R+L} {2}=\frac {R-L+L+L} {2}=\frac {R-L+2L} {2}=\frac {R-L} {2}+\frac {2L} {2}=\frac {R-L} {2}+L=L+\frac {R-L} {2}
例题题面
关键部分代码
(latex公式手打不易,点个赞吧)
本人第一次尝试latex公式,如有错误,请指出