1. 程式人生 > >滑動視窗(Sliding Window)技巧總結

滑動視窗(Sliding Window)技巧總結

## 什麼是滑動視窗(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