左右指针
一、概念
所谓左右指针,就是两个指针相向而行或者相背而行;而所谓快慢指针,就是两个指针同向而行,一快一慢。
左右指针在我们算法中使用是非常广泛的,一般解决问题包括但是不仅限于两数之和类问题,翻转数组,双指针问题又可以进行细分为,滑动窗口,二分查找等具体的技巧。但是滑动窗口,二分查找,已经开始自立门派,自成体系了。
二、经典题目
15. 三数之和
...About 3 min
所谓左右指针,就是两个指针相向而行或者相背而行;而所谓快慢指针,就是两个指针同向而行,一快一慢。
左右指针在我们算法中使用是非常广泛的,一般解决问题包括但是不仅限于两数之和类问题,翻转数组,双指针问题又可以进行细分为,滑动窗口,二分查找等具体的技巧。但是滑动窗口,二分查找,已经开始自立门派,自成体系了。
二分查找的基本思想是很简单的可能很多小学生都可以思考出来,但是实际去 写又会遇到很多问题。因为里面有很多细节需要注意。一不小心就会写失败。
二分查找的基本算法思想为:通过确定目标元素所在的区间范围,反复将查找范围减半,直到找到元素或找不到该元素为止。
target == nums[mid]找到目标索引target < nums[mid]目标位置在[left, mid-1], right=mid-1target > nums[mid]目标位置在[mid+1, right],left=mid+1