Array
二分查找
使用条件:
- 数组中元素是有序的
- 注意: 若数组中存在重复元素, 那最后查找结果下标并不唯一
使用场景:
- 在有序数组中寻找目标值的下标
- 将目标值插入有序数组中
1 | public int binarySearch(int[] nums, int target) { |
双指针
介绍: 通过一个快指针和一个慢指针在一个for循环下完成两个for循环的工作
使用方法:
- 同向移动
- 双向移动
使用场景:
- 原地移除数组中的某元素(同向)
- 对有正有负的有序数组的元素平方再排序(双向)
滑动窗口
介绍: 不断调整窗口大小寻找所需结果(利用两个指针控制窗口大小)
使用场景:
- 求满足条件的子序列
前缀和
介绍: 类似与哈夫曼编码的思想, 利用新数组保存每个数组元素i之前(包括i)的和
使用场景:
- 对数组的区间和使用频繁的需求
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 gbbdxstx!