'''
Description:
Autor: Au3C2
Date: 2020-12-03 12:28:52
LastEditors: Au3C2
LastEditTime: 2021-02-19 11:42:36
'''
class Solution:
def longestOnes(self, A: List[int], K: int) -> int:
n = len(A)
if K >= n :
return K
if n == 0:
return 0
if sum(A) == 0:
return K
count = [0,0]
lp = 0 #左指针
max_len = K + 1
cur_len = 0
for rp in range(n): #右指针
cur_len += 1
count[A[rp]] += 1
if cur_len > max_len and count[1] + K >= cur_len:
max_len = cur_len
if count[1] + K < cur_len:
count[A[lp]] -= 1
lp += 1
cur_len -= 1
return max_len
# 滑动窗口,中等,每日一题
# 旧题重温
# https://leetcode-cn.com/problems/max-consecutive-ones-iii/