C 滑動視窗演算法

2021-10-19 04:01:02 字數 952 閱讀 8650

滑動視窗演算法在乙個特定大小的字串或陣列上進行操作,而不在整個字串和陣列上操作,這樣就降低了問題的複雜度,從而也達到降低了迴圈的巢狀深度。

如下題

給你兩個長度相同的字串,s 和 t。

將 s 中的第 i 個字元變到 t 中的第 i 個字元需要 |s[i] - t[i]| 的開銷(開銷可能為 0),也就是兩個字元的

ascii 碼值的差的絕對值。

用於變更字串的最大預算是 maxcost。在轉化字串時,總開銷應當小於等於該預算,這也意味著字串的轉化可能是不完全的。

如果你可以將 s 的子字串轉化為它在 t 中對應的子字串,則返回可以轉化的最大長度。

如果 s 中沒有子字串可以轉化成 t 中對應的子字串,則返回 0。

示例 1:

輸入:s = 「abcd」, t = 「bcdf」, cost = 3 輸出:3 解釋:s 中的 「abc」 可以變為 「bcd」。開銷為

3,所以最大長度為 3。 示例 2:

輸入:s = 「abcd」, t = 「cdef」, cost = 3 輸出:1 解釋:s 中的任一字元要想變成 t

中對應的字元,其開銷都是 2。因此,最大長度為 1。 示例 3:

字串s

字串t

開銷最大長度

[a] b c d

[b] c d f11

[a b] c d

[b c] d f22

[a b c] d

[b c d] f33

a [b c d]

b [c d f]43

只需要返回視窗的大小就是該開銷可以轉化的最大長度

**如下

class

solution

}return s.

size()

- left;}}

;

滑動視窗演算法

我們學習過計算機網路都知道為了避免擁塞發生,在網路傳輸時有滑動視窗協議控制傳輸時流量。該協議允許傳送方在停止並等待確認前傳送多個資料分組。由於傳送方不必每發乙個分組就停下來等待確認,因此該協議可以加速資料的傳輸,提高網路吞吐量。這個跟我們今天說的滑動視窗演算法是乙個原理。該演算法的作用就是將我們多層...

滑動視窗演算法

在letecode程式設計中經常會碰到一類尋找最長序列的問題,這個時候都可以採用滑動視窗的演算法 滑動視窗就是控制乙個雙指標left,right,沒有達到極限條件的時候right指標,操作臨界條件 就讓left指標,然後更新這個最長序列。比如下面的的問題 問題一 給你兩個長度相同的字串,s 和 t。...

滑動視窗演算法

滑動視窗演算法可以用以解決陣列 字串的子元素問題,它可以將巢狀的迴圈問題,轉換為單迴圈問題,降低時間複雜度。給定乙個字串,請你找出其中不含有重複字元的最長子串的長度。輸入 s abcabcbb 輸出 3 解釋 因為無重複字元的最長子串是 abc 所以其長度為 3。通過不斷滑動視窗的大小,判斷視窗中元...