关于双指针的方法,可能大家并不陌生,而滑动窗口算法,其实算是双指针的一种实现方式,主要用于解决子串问题。并且在leetCode上起码有10道以上的滑动窗口应用题目,难度均在middle和hard。因此,我本文也致力于阐述自己的想法,供大家互相学习。
首先滑动窗口算法,顾名思义,就是要维护一个窗口,然后通过不断的滑动,最终跟新答案。下面是我从“Labuladuo算法小抄”上看到的伪代码:
int left = 0, right = 0;
while (right < s.size()) {
// 增大窗口
window.add(s[right]);
right++;
while (window needs shrink) {
// 缩小窗口
window.remove(s[left]);
left++;
}
}