sliding-window 技术在数组或字符串上维护一个连续的范围(window),并通过滑动而不是从头重新计算来解决许多 subarray/substring 问题,时间复杂度为 O(n)。
核心思想
通过移动右边界来扩展窗口;当违反约束时通过移动左边界来收缩窗口。复用之前的计算结果,而不是重新扫描。
示例:大小为 k 的任意窗口的最大和
python
():
window = (arr[:k])
best = window
i (k, (arr)):
window += arr[i] - arr[i - k]
best = (best, window)
best
max_window_sum([, , , , , ], )
