AlgoMaster Logo

Max Consecutive Ones III

nums=[1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0],k=2
1public int longestOnes(int[] nums, int k) {
2    int maxLen = 0;
3    int left = 0;
4    int zerosCount = 0;
5
6    for (int right = 0; right < nums.length; right++) {
7        if (nums[right] == 0) {
8            zerosCount++;
9        }
10
11        while (zerosCount > k) {
12            if (nums[left] == 0) {
13                zerosCount--;
14            }
15            left++;
16        }
17
18        maxLen = Math.max(maxLen, right - left + 1);
19    }
20
21    return maxLen;
22}
0 / 42
11100011110zerosCount = 0maxLen = 0