提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
复习了二分查找和双指针相关的知识,做了代码随想录上的两道例题和相关题目推荐。
一、二分法
1.两种主流写法:
- 左闭右闭 [left, right]
- 左闭右开 [left, right)
2.以上两种写法的主要区别在于:
-
while ()中的条件判断是<=还是<
看区间是否合法,要刚好取到两个端点值(比如左闭右开,left <= right不在[left, right)中)
-
right重新赋值的时候是mid还是mid-1
看nus[mid]是不是我们搜索的值(比如左闭右闭,nums[mid]一定不是我们要搜索的target)
二、双指针
1.数组基本知识
数组是存放在连续内存空间上的相同类型数据的集合。因此不能单独删除某个元素,只能覆盖,因此earse()的时间复杂度为O(n)。
2.可以使用快慢双指针实现earse函数
用快指针指向新数组需要的元素,用慢指针指向新数组的下标。
总结
很久没做题了,按照刷题计划做完了704和27还有相关的推荐题目(844还没做出来,沉淀几天再做),又看了卡哥在b站上的两个讲解视频,感觉彻底理解二分法的写法了,再也不是背模版了。