刷题要求
1.把 704写熟练,要熟悉 根据 左闭右开,左闭右闭 两种区间规则 写出来的二分法。
基础知识
1.C++中数组地址是连续的,Java中数组地址不连续。
2.vector的底层实现是array,vector是容器,不是数组。
3.数组的元素是不能删的,只能覆盖。
4.由于每次查找都会将查找范围缩小一半,因此二分查找的时间复杂度是 O(logn),其中 n 是数组的长度。
今日学习的文章链接,或者视频链接
1.https://programmercarl.com/%E6%95%B0%E7%BB%84%E7%90%86%E8%AE%BA%E5%9F%BA%E7%A1%80.html
看完代码随想录之后的想法
1.二分查找的做法主要是定义查找的范围,即定义两个边界,寻找边界的中间值去找是否与target一样。变动的是两个边界值,当然middle随边界值而改变。所以细节都应该在边界值上。
自己实现过程中遇到哪些困难
还真是一看就会一写就废,原理能懂,代码就是不会写。多练多练。还有诸多细节如二分查找的边界值要理解透。
今日收获,记录一下自己的学习时长
1.二分查找的while那里是否需要“=”号,只需要看合不合法,要是左闭右开,肯定不能取等于,因为左边能取到右边取不到。
2.二分查找另外一个重要边界是判断等于middle还是middle-1。【还没理解透,后面补】
3.移除元素只会了暴力解法,双指针解法后面补。【还没理解透,后面补】