1004. Max Consecutive Ones III - Medium
Given an array A
of 0s and 1s, we may change up to K
values from 0 to 1.
Return the length of the longest (contiguous) subarray that contains only 1s.
Example 1:
Input: A = [1,1,1,0,0,0,1,1,1,1,0], K = 2
Output: 6
Explanation:
[1,1,1,0,0,1,1,1,1,1,1]
Bolded numbers were flipped from 0 to 1. The longest subarray is underlined.
Example 2:
Input: A = [0,0,1,1,0,0,1,1,1,0,1,1,0,0,0,1,1,1,1], K = 3
Output: 10
Explanation:
[0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1]
Bolded numbers were flipped from 0 to 1. The longest subarray is underlined.
Note:
1 <= A.length <= 20000
0 <= K <= A.length
A[i]
is0
or1
sliding window
time = O(n), space = O(1)
class Solution { public int longestOnes(int[] A, int K) { if(A == null || A.length == 0) { return 0; } int s = 0, f = 0, numOfZero = 0, max = 0; while(f < A.length) { if(A[f++] == 0) { numOfZero++; } while(numOfZero > K) { if(A[s++] == 0) { numOfZero--; } } max = Math.max(max, f - s); } return max; } }