1004. Max Consecutive Ones III

Source code notebook Author Update time

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. 1 <= A.length <= 20000
  2. 0 <= K <= A.length
  3. A[i] is 0 or 1
# @lc code=start
using LeetCode

function longest_ones(A::Vector{Int}, K::Int)
    l = r = 1
    len = length(A)
    cnt = res = 0
    while r <= len
        (A[r] == 0) && (cnt += 1)
        r += 1
        while cnt > K
            (A[l] == 0) && (cnt -= 1)
            l += 1
        end
        res = max(res, r - l)
    end
    return res
end
# @lc code=end
longest_ones (generic function with 1 method)

This page was generated using DemoCards.jl and Literate.jl.