less than 1 minute read

Problem Statement

leetcode problem link

My Solution [Accepted]

class Solution:
    def longestOnes(self, nums: List[int], k: int) -> int:
        l, r = 0, 0
        N = len(nums)
        curr_k = k
        res = 0
        for r in range(N):
            if nums[r] == 0:
                curr_k -= 1
            if curr_k >= 0:
                res = max(res, r - l + 1)
            while curr_k < 0 and l < r:
                if nums[l] == 0:
                    curr_k += 1
                l += 1
        return res


Editorial

class Solution:
    def longestOnes(self, nums: List[int], k: int) -> int:
        left = 0
        curr = 0
        ans = 0
        for right in range(len(nums)):
            if nums[right] == 0:
                curr += 1

            while curr > k:
                if nums[left] == 0:
                    curr -= 1
                left += 1

            ans = max(ans, right - left + 1)

        return ans