滑動窗口算法
最近刷題,經常刷到滑動窗口算法的題目,總結一下精華:
概念:
在特定窗口大小(而非整個字符串,窗口大小不固定,可以縮放)的數組或字符串上操作。
優勢:
將部分場景問題的多層嵌套循環,變成單循環,減少時間復雜度。
基本過程:

-
我們在數組或字符串中使用雙指針中的左右指針技巧,初始化 left = right = 0,把索引閉區間 [left, right] 稱為一個「窗口」。
-
我們先不斷地增加 right 指針擴大窗口 [left, right],直到窗口中的字符串符合要求(包含了 T 中的所有字符)。
-
此時,我們停止增加 right,轉而不斷增加 left 指針縮小窗口 [left, right],直到窗口中的字符串不再符合要求(不包含 T 中的所有字符了)。同時,每次增加 left,我們都要更新一輪結果。
-
重復第 2 和第 3 步,直到 right 到達數組或字符串的盡頭。
典型應用:
TCP流量控制
浙公網安備 33010602011771號