Two Pointers 双指针
输入是数组或者字符串,不算是标准算法的类型,但是是一类问题的通用解法。
同向双指针
两个指针同向运动,用两个变量,一个变量记录当写指针的位置(fast index), 一个变量记录隔板位置(slow index).
- 性质1. slow左边是处理好的元素,当先指针fast右边是未处理的元素,两个指针之间的区域是无用的元素/每次只要分析当前元素性质是否要加入或者移动slow就可以!
- 性质2. 用快慢指针,同向而行,处理完毕之后,return的结果中,每个integer/char的相对位置不变!
相向双指针
两个指针相向而行,一个左指针,一个右指针
- 性质1. left左边是处理好的元素,right右边也是处理好的元素,两个隔板中间是未处理区域
- 性质2. 处理完毕后,return的结果中,每个integer/char的相对位置可能发生变化!!!
Two Sum
• 几乎所有 Two Sum 变种
Partition
• Quick Select • 分成两个部分 • 分成三个部分 • 一些你没听过的(但是面试会考的)排序算法