這篇文章主要介紹了leetcode如何實(shí)現(xiàn)滑動(dòng)窗口,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
創(chuàng)新互聯(lián)建站主要為客戶(hù)提供服務(wù)項(xiàng)目涵蓋了網(wǎng)頁(yè)視覺(jué)設(shè)計(jì)、VI標(biāo)志設(shè)計(jì)、營(yíng)銷(xiāo)網(wǎng)站、網(wǎng)站程序開(kāi)發(fā)、HTML5響應(yīng)式成都網(wǎng)站建設(shè)、移動(dòng)網(wǎng)站建設(shè)、微商城、網(wǎng)站托管及網(wǎng)頁(yè)維護(hù)、WEB系統(tǒng)開(kāi)發(fā)、域名注冊(cè)、國(guó)內(nèi)外服務(wù)器租用、視頻、平面設(shè)計(jì)、SEO優(yōu)化排名。設(shè)計(jì)、前端、后端三個(gè)建站步驟的完善服務(wù)體系。一人跟蹤測(cè)試的建站服務(wù)標(biāo)準(zhǔn)。已經(jīng)為木屋行業(yè)客戶(hù)提供了網(wǎng)站營(yíng)銷(xiāo)推廣服務(wù)。
滑動(dòng)窗口類(lèi)題目基本上技巧在于維護(hù)一個(gè)滑動(dòng)窗口,移動(dòng)窗口的左右指針,使得窗口滿(mǎn)足一定條件,關(guān)鍵在于如何處理窗口滿(mǎn)足條件的地方,使得算法更高效。
給定一個(gè)由若干 0
和 1
組成的數(shù)組 A
,我們最多可以將 K
個(gè)值從 0 變成 1 。
返回僅包含 1 的最長(zhǎng)(連續(xù))子數(shù)組的長(zhǎng)度。
示例 1:
輸入:A = [1,1,1,0,0,0,1,1,1,1,0], K = 2
輸出:6
解釋?zhuān)?br/>[1,1,1,0,0,1,1,1,1,1,1]
粗體數(shù)字從 0 翻轉(zhuǎn)到 1,最長(zhǎng)的子數(shù)組長(zhǎng)度為 6。
示例 2:
輸入:A = [0,0,1,1,0,0,1,1,1,0,1,1,0,0,0,1,1,1,1], K = 3
輸出:10
解釋?zhuān)?br/>[0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1]
粗體數(shù)字從 0 翻轉(zhuǎn)到 1,最長(zhǎng)的子數(shù)組長(zhǎng)度為 10。
解題思路:
1,本題的要點(diǎn)不在滑動(dòng)窗口長(zhǎng)度,在于,維持窗口內(nèi)0的個(gè)數(shù)<=K
2,我們定義指針l,r分別表示窗口左右下標(biāo),移動(dòng)r,當(dāng)A[r]==0的時(shí)候我們?cè)黾?的個(gè)數(shù)記錄sum,分兩種情況
A,sum>K 這個(gè)時(shí)候需要移動(dòng)左指針,讓0的個(gè)數(shù)減1
B,sum<=K 無(wú)需處理,繼續(xù)移動(dòng)右指針
func longestOnes(A []int, K int) int { if K==0 &&len(A)<1{ return 0 } l:=0 sum:=0 max:=0 for r:=0;rK{ for A[l]!=0{ l++ } l++ sum-- } } if r-l+1>max{ max=r-l+1 } } return max}
感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“l(fā)eetcode如何實(shí)現(xiàn)滑動(dòng)窗口”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來(lái)學(xué)習(xí)!