這篇文章主要介紹了leetcode如何實現滑動窗口,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
創新互聯建站主要為客戶提供服務項目涵蓋了網頁視覺設計、VI標志設計、營銷網站、網站程序開發、HTML5響應式成都網站建設、移動網站建設、微商城、網站托管及網頁維護、WEB系統開發、域名注冊、國內外服務器租用、視頻、平面設計、SEO優化排名。設計、前端、后端三個建站步驟的完善服務體系。一人跟蹤測試的建站服務標準。已經為木屋行業客戶提供了網站營銷推廣服務。
滑動窗口類題目基本上技巧在于維護一個滑動窗口,移動窗口的左右指針,使得窗口滿足一定條件,關鍵在于如何處理窗口滿足條件的地方,使得算法更高效。
給定一個由若干 0
和 1
組成的數組 A
,我們最多可以將 K
個值從 0 變成 1 。
返回僅包含 1 的最長(連續)子數組的長度。
示例 1:
輸入:A = [1,1,1,0,0,0,1,1,1,1,0], K = 2
輸出:6
解釋:
[1,1,1,0,0,1,1,1,1,1,1]
粗體數字從 0 翻轉到 1,最長的子數組長度為 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
解釋:
[0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1]
粗體數字從 0 翻轉到 1,最長的子數組長度為 10。
解題思路:
1,本題的要點不在滑動窗口長度,在于,維持窗口內0的個數<=K
2,我們定義指針l,r分別表示窗口左右下標,移動r,當A[r]==0的時候我們增加0的個數記錄sum,分兩種情況
A,sum>K 這個時候需要移動左指針,讓0的個數減1
B,sum<=K 無需處理,繼續移動右指針
func longestOnes(A []int, K int) int { if K==0 &&len(A)<1{ return 0 } l:=0 sum:=0 max:=0 for r:=0;r<len(A);r++{ if A[r]==0{ sum++ if sum>K{ for A[l]!=0{ l++ } l++ sum-- } } if r-l+1>max{ max=r-l+1 } } return max}
感謝你能夠認真閱讀完這篇文章,希望小編分享的“leetcode如何實現滑動窗口”這篇文章對大家有幫助,同時也希望大家多多支持創新互聯,關注創新互聯行業資訊頻道,更多相關知識等著你來學習!
本文標題:leetcode如何實現滑動窗口
文章鏈接:http://vcdvsql.cn/article34/peiope.html
成都網站建設公司_創新互聯,為您提供企業網站制作、定制開發、標簽優化、App設計、Google、網站改版
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯