题目:704.二分查找
思路
这道题是数组里比较基础的一道。
数组下标从0开始,连续地址。
本题是有序的,可以用二分法。
困难
困难点在于几个边界条件的判断。
1、确定使用左闭右闭还是左闭右开,决定初始right的值;
1、while里面,left和right左闭右闭才可相等,否则不行;
2、if分别判断target大于、小于后,更新边界时不要再把middle包含进下一次循环的区间!等于的话就直接返回middle即可。
笔记
每种语言都会点,但长时间不写代码重捡起来基础语法就会混淆。
python的判断是加冒号,if、elif、else。
题目:27.移除元素
思路
数组删除元素,只能后一个元素覆盖前一个。
最直白的思路是for循环遍历数组,再一层for循环依次向前覆盖指定元素,但这样就n^2了。卡哥提供了双指针的思路,直接变成O(n)。
fast遍历数组,slow用于生成新数组,即fast遇到val时跳过,slow不变,fast自己往前走。
困难
1、外层循环是fast遍历数组
2、目的是找新数组,所以遇到val要跳过,判断不等于!=
3、最后return的值是slow