常用算法之滑動窗口

1、滑動窗口解釋

  • 就像描述的那樣,可以理解成是一個會滑動的窗口,每次記錄下窗口的狀態,再找出符合條件的適合的窗口
  • 可以使用滑動窗口來減少時間複雜度

2、思想

一個左指針,一個右指針。其中左指針用於縮小範圍,右指針用於擴大搜索範圍。一般求滑動窗口的最小值都是在縮小左指針的時候取得的。

右指針擴展的條件時:只要當前還沒有滿足條件,就暴力增長,直到第一次滿足條件為止。

左指針收縮的條件:只要當前指針的縮小還沒影響窗口的可滿足性,就一直暴力向左增長。一但當前指針向前移動的時候影響了窗口的可滿足性,就記錄下當前的窗口大小,並更新目前為止滿足條件的最小窗口記錄。之後,再次擴展右指針,使得窗口滿足題目的條件。

以此類推即可

3、滑動窗口經典算法

(1)給一組大小為n的整數數組,計算長度為k的子數組的最大值

比如:數組{1,2,3,4,5,7,6,1,8},k=2,那麼最終結果應該是7+6=13最大

答案在最後

(2) 問題描述:給定一個字符串,請你找出其中不含有重複字符的 最長子串 的長度。

輸入: “abcabcbb” 輸出: 3

答案在最後

算法題來自於leetcode,僅作為學習筆記,如有侵權,聯繫刪除

算法題答案:

常用算法之滑動窗口

題(1)答案

常用算法之滑動窗口

題(2)答案


分享到:


相關文章: