滑動視窗問題

2021-10-19 07:37:31 字數 892 閱讀 4441

雙指標,在左右兩個邊界處分別設有指標,一般可用於陣列和字串的應用,且優點遍歷次數較少。

用雙指標來限定視窗的範圍,每一次對與指標進行滑動,來對於視窗裡的資料結合判斷。

給你乙個僅由大寫英文本母組成的字串,你可以將任意位置上的字元替換成另外的字元,總共可最多替換 k 次。在執行上述操作後,找到包含重複字母的最長子串的長度。(力扣424題)

分析:對於此問題,可以用雙指標限定視窗,再尋找視窗裡的最多字元,

來遍歷視窗尋找非該字元的其他字元出現的次數,與k值進行比較。

首先,尾指標右移,視窗長度加一,如果滿足條件,則繼續執行,否則頭指標右移,視窗長度減一,對比即視窗整體右移。

int

max(

int*a,

int left,

int right)

//函式找該視窗非最多字元出現次數

return right-left-t;

}int

characterreplacement

(char

* s,

int k)

;int n =

strlen

(s);

int t=0;

int left =

0, right =0;

a[s[0]

-'a']++

;while

(right < n)

if(t<

(right-left)

)

t=right-left;

}return t;

}

//圖一引用

滑動視窗問題

題目 有乙個整型陣列 arr 和乙個大小為 w 的視窗從陣列的最左邊滑到最右邊,視窗每次向右邊滑乙個位置。返回乙個長度為n w 1的陣列res,res i 表示每一種視窗狀態下的最大值。以陣列為 4,3,5,4,3,3,6,7 w 3為例。因為第乙個視窗 4,3,5 的最大值為5,第二個視窗 3,5...

滑動視窗問題

judge 題意 給定乙個長度為n n 10 6 的陣列。有乙個大小為k的滑動視窗從陣列的最左端移動到最右端。求滑動視窗在每個位置時的最大值和最小值。總時間限制 12000ms 可以使用單調佇列來做這道題。include include using namespace std define mode...

力扣 滑動視窗問題

1.76.最小覆蓋子串,兩個map,滑動視窗,left移動條件是匹配計數 s1的map.size 2.567.字串的排列,看似和上個類似,但是移動條件,很神奇 3.424.替換後的最長重複字元,這個挺難的,將問題轉換為視窗內除了出現次數最多的字元外,其他的字元出現次數不能多於k,這個就是left縮小...