704.二分查找
原来自己会的是左闭右闭区间的方法,本次学习了左闭右开的方法。
- 第一次写左闭右闭
left <= right,忘记写了=,没有通过所有测试用例,对开闭区间有更深刻的认识以后不会有这个错误了 - 为什么右开,不是左开,因为
right = nums.length,即数组长度,但是不能取最后一个下标,理论上左开应该也可以,但是估计会很别扭 right = mid,的原因是右开,mid !== target,所以不是right = mid - 1- 学习了不溢出的算法
mid = left + Math.floor((right - left) >> 2),同时用>>代替/2会更高效一点(至少心里觉得更高端了),这块的原理后续有空学一下
27. 移除元素
- 暴力解法也写了好久,写错了n和size的关系,同时通过debug才发现需要i--
- 思路是把后面的东西往前移,首先移过来的一定不是val,是有效的数字,但是移过来的数字会出现重复两次,通过debug发现会通过后续的移动把重复的数字覆盖掉