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