滑動視窗(Sliding Window)技巧總結
阿新 • • 發佈:2020-09-01
## 什麼是滑動視窗(Sliding Window)
> The Sliding Problem contains a sliding window which is a sub – list that runs over a Large Array which is an underlying collection of elements.
滑動視窗演算法可以用以解決陣列/字串的子元素問題,它可以將巢狀的迴圈問題,轉換為單迴圈問題,降低時間複雜度。
比如找最長的全為1的子陣列長度。滑動視窗一般從第一個元素開始,一直往右邊一個一個元素挪動。當然了,根據題目要求,我們可能有固定視窗大小的情況,也有視窗的大小變化的情況。
![該圖中,我們視窗一格一格往右移動](https://yxl-article.oss-cn-shenzhen.aliyuncs.com/images/sling-window.jpg)
## 如何判斷使用滑動視窗演算法
如果題目中求的結果有以下情況時可使用滑動視窗演算法:
- 最小值 Minimum value
- 最大值 Maximum value
- 最長值 Longest value
- 最短值 Shortest value
- K值 K-sized value
## 演算法模板與思路
```
/* 滑動視窗演算法框架 */
void slidingWindow(string s, string t) {
unordered_map