九阳真经之滑动窗口
在練習算法題的時候,對于新手來說不是很好,但是其實里面有好多技巧,介紹滑動窗口。窗口一樣有邊界的情況,比如窗口的寬是取決兩邊。
對于滑動窗口的應用場景,比如題庫中出現關鍵字,滿足某某條件計算結果(出現次數,同時包含):最長 最短 子串 子數組 子序列。
思路(尋找最長)
1、核心:左右雙指針(left right)在起始點,right向右逐位循環移動,每次移動過程中
2、
如果:窗口內元素滿足條件,right向右擴大窗口,更新最優結果
如果:窗口內元素不滿足條件,left向右縮小窗口
3、直到right到達結尾
思路(尋找最短)
1、核心:左右雙指針(left right)在起始點,right向右逐位循環移動,每次移動過程中
2、
如果:窗口內元素滿足條件,left向右縮小窗口,更新最優結果
如果:窗口內元素不滿足條件,right向右擴大窗口
3、直到right到達結尾
模板
// 最長 int left = 0; int right = 0; int result = 0; int optimalResult = 0; while(右指針沒有到達結尾) {窗口擴大,添加right對應的元素,更新當前resultwhile(result 不滿足題目所說的條件) {更新最優的結果 optimalResult 窗口縮小,移除left對應的元素,left右移}right++; } return optimalResult; // 最短 int left = 0; int right = 0; int result = 0; int optimalResult = 0; while(右指針沒有到達結尾) {窗口擴大,添加right對應的元素,更新當前resultwhile(result 滿足題目所說的條件) {更新最優的結果 optimalResult 窗口縮小,移除left對應的元素,left右移}right++; } return optimalResult;總結
- 上一篇: 找回QQ密码
- 下一篇: XMind 思维导图 软件下载