題目
給定乙個二進位制陣列, 計算其中最大連續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的個數...