704.二分查找
关于二分查找边界条件的思考
常见的两种,左闭右闭即[left, right],或者左闭右开即[left, right)。
归根结底,还是边界值的判断。我查找完一次middle并发现不符合条件,下一次查询时,这个middle应当踢出区间
- 对while (left <= right) ,如果right = middle,那下一次查询时这一次查询的middle仍在区间内,所以要middle - 1,将这一次查询的middle踢出区间
- 对while (left < right),更新right = middle即可,因为我当前查询的middle不在下一次查询的区间内,即:下一个查询区间不会去比较nums[middle]
27.移除元素
双指针法
双指针法(快慢指针法): 通过一个快指针和慢指针在一个for循环下完成两个for循环的工作。
定义快慢指针
- 快指针:寻找新数组的元素 ,新数组就是不含有目标元素的数组
- 慢指针:指向更新 新数组下标的位置
定义一个for循环用i遍历,外部定义一个j在for循环中工作后++,起到两个for循环的效果
- 26.删除排序数组中的重复项
- 283.移动零
- 844.比较含退格的字符串
- 977.有序数组的平方