双指针与滑动窗口
双指针算法
1 | for (int i = 0, j = 0; i < n; i ++ ) |
常见问题分类:
(1) 对于一个序列,用两个指针维护一段区间
(2) 对于两个序列,维护某种次序,比如归并排序中合并两个有序序列的操作
滑动窗口
https://www.cnblogs.com/powercto/p/14125370.html?ivk_sa=1024320u
- 使用双指针中的左右指针技巧,初始化 left = right = 0,把索引闭区间 [left, right] 称为一个「窗口」。
- 我们先不断地增加 right 指针扩大窗口 [left, right],直到窗口中符合要求。
- 此时,我们停止增加 right,转而不断增加 left 指针缩小窗口 [left, right],直到窗口中的字符串不再符合要求)。同时,每次增加 left,我们都要更新一轮结果。
- 重复第 2 和第 3 步,直到 right 到达字符串 S 的尽头。
这个思路其实也不难,第 2 步相当于在寻找一个「可行解」,然后第 3 步在优化这个「可行解」,最终找到最优解。左右指针轮流前进,窗口大小增增减减,窗口不断向右滑动。
- 標題: 双指针与滑动窗口
- 作者: sdjasj
- 撰寫于: 2022-02-19 20:31:25
- 更新于: 2022-02-19 20:38:24
- 連結: https://redefine.ohevan.com/2022/02/19/双指针与滑动窗口/
- 版權宣告: 本作品采用 CC BY-NC-SA 4.0 进行许可。
留言