702.二分查找
二分法查找:利用数组的有序特性,每次都计算中间值a[mid],再和被查找的数字比较判断接下来的向左或者向右查找,找不到有一个返回值。
左闭右闭的区间,考虑left与right是否可以取等号。
左闭右开的区间,left与right不可以取等号,只可以小于。
middle的赋值:int middle=left+((right - left)/2+left)
class的定义{};,是有分号的。
这个时候没有注意到自己对middle的定义有错误。正常计算我们的middle就是(left+right)/2.这个时候为什么不用,是因为防止溢出。
这个时候时间还比较长。对比了15ms的,对代码进行了修改,速度提高了。但是确实不知道为什么为什么15ms的是怎么来的。
27.移除元素
双指针法:用一层for循环超越两层for循环。使用两个方向相同或者方向相反的指针进行扫描,从而处理数据。
在b站找到了一个视频可以结合理解。
双指针理解:【【双指针超清晰动画演示】从一个简单模型到双指针三大经典应用: 三数之和 归并排序 快速排序(上集)-哔哩哔哩】 https://b23.tv/APOyWlH
快指针:获取新数组中的元素。
慢指针:获取新数组中需要的位置。
这个速度简直没有想到诶!快慢指针的理解很重要‼️
是一个C++新人,是一个算法小白。