485 最大連續1的個數

2021-10-08 08:41:48 字數 742 閱讀 8211

題目

給定乙個二進位制陣列, 計算其中最大連續1的個數。

只包含0和1

常規思路
一般想到的是都是遍歷陣列,用乙個變數記錄當前連續1的個數,另乙個變數記錄最大的長度,每當出現0就比較這兩個變數直到最後完成。

但是這個題目我們可以用滑窗法來做

滑窗法
滑動視窗法,可以用來解決一些查詢滿足一定條件的連續區間的性質等的問題,由於區間連續,因此當區間變化時,可以通過舊有的計算結果對搜尋控制項進行剪枝,這樣就減少了重複計算,降低了時間複雜度

將兩個指標範圍內的比作乙個視窗,通過移動指標來改變視窗大小,觀察窗口中的元素是否符合題意

此題具體思路
首先定義left和right左右兩個指標,初始為0

定義max記錄最大連續1的個數,初始為0

然後當右指標沒有到末尾時一直迴圈

在迴圈內

遇到1,right加一右移,擴大視窗

遇到0,比較視窗的長度和max的大小,如果max小於視窗長度,更新max,左指標移動到當前右指標+1的位置

最後跳出迴圈時因為最後一次沒有比較,所以max和視窗長度還要再比一次

**
class

solution

}return max>right-left?max:right-left;

}}

485 最大連續1的個數

給定乙個二進位制陣列,計算其中最大連續1的個數。示例 1 輸入 1 1,0 1,1 1 輸出 3解釋 開頭的兩位和最後的三位都是連續1,所以最大連續1的個數是 3 注意 輸入的陣列只包含 0 和1。輸入陣列的長度是正整數,且不超過 10,000。class solution def findmaxc...

485 最大連續1的個數

給定乙個二進位制陣列,計算其中最大連續1的個數。注意 輸入的陣列只包含 0 和1。輸入陣列的長度是正整數,且不超過 10,000。判斷陣列是否滿足注意條件,初始化變數x y,迴圈陣列,若為1則x 1,若為0則判斷y是否小於x,若小於則y x並且清空x,直到整個陣列迴圈完畢 class solutio...

485 最大連續1的個數

給定乙個二進位制陣列,計算其中最大連續1的個數。示例 1 輸入 1,1,0,1,1,1 輸出 3 解釋 開頭的兩位和最後的三位都是連續1,所以最大連續1的個數是 3.注意 輸入的陣列只包含 0 和1。輸入陣列的長度是正整數,且不超過 10,000。設定兩個變數k,m分別記錄連續1的個數和連續1的個數...