給定一個由若干 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。
維護一個0個數小于k的滑動窗口,找出最大的窗口
代碼
class Solution {public int longestOnes(int[] A, int K) {int l=0,r=0,n=A.length,cnt=0,res=0;while (r<n){if(A[r]==0) cnt++;while (cnt>K){if(A[l++]==0)cnt--;}res= Math.max(res,r-l+1);r++;}return res;}
}