滑動視窗總結

2022-05-02 19:06:08 字數 861 閱讀 3906

1.我們使用雙指標的思路,初始定義兩個指標,left=right=0,把索引閉區間[left,right]看作乙個滑動視窗

2.然後不斷增加right的值,直到視窗中的字串符合要求

3.然後,停止增加right的值,轉而增加left的值,直到視窗中的字串不符合要求,每次增加left,就要更新一輪結果。

4.不斷重複2,3步驟,直到遍歷完整個字串

通俗來講,第2步是為了找到可行解,然後第三步是為了「優化可行解」。

滑動視窗的視窗大小可能固定,也可能不固定。

視窗大小固定**模板:

// 固定視窗大小為 k

string s;

// 在 s 中尋找視窗大小為 k 時的所包含最大母音字母個數

int right = 0;

while(right < s.size())

}return res;

視窗大小不固定**模板:

string s, t;

// 在 s 中尋找 t 的「最小覆蓋子串」

int left = 0, right = 0;

string res = s;

while(right < s.size())

}return res;

例題:

無重複字元的最長子串(

給定乙個字串,請你找出其中不含有重複字元的 最長子串 的長度。

class solution 

else

if(cnt == count) ans.push_back(left);}}

}return ans;

}};

滑動視窗總結

滑動視窗思想 視窗由兩個指標構成,乙個左指標left,乙個右指標right,然後 left,right 表示的索引範圍是乙個視窗了。右指標right的功能是用來擴充套件視窗 當視窗內的條件沒有達到題目要求時,我們需要不斷移動右指標right直到視窗內的條件第一次滿足題目要求為止。左指標left的功能...

滑動視窗總結

乙個序列中,滿足某些條件的,子串的,最長 最短 個數。時間複雜度分析 暴力解法的時間複雜度一般為o n 3 o n 2 列舉所有的子串,o n 判斷是否滿足條件。滑動視窗在兩個方面都降低時間複雜度 首先並不列舉所有的子串,只列舉可能包含答案的那些。其次通過記錄視窗內子串的一些資訊,使得判斷是否滿足條...

滑動視窗總結

本部落格基於大佬的題解 滑動視窗是一種高階的雙指標演算法,一般用於字串匹配問題 最小覆蓋子串 找到字串中所有字母異位詞 無重複字元的最長子串 字串的排列 滑動窗的基本思路就是維護乙個視窗,不斷滑動。該演算法的大致邏輯如下 int left 0,right 0 while right s.size 演...