题目链接
https://leetcode-cn.com/problems/max-consecutive-ones-iii/
题目描述
给定由若干个0个1组成的数组A,我们最多可以将K个值从0变成1。返回仅包含1的最长(连续)子数组的长度。
示例
输入:A = [1,1,1,0,0,0,1,1,1,1,0],K=2
输出:6
将索引为5和10的0替换为1,得到仅包含1的最长连续子数组长度6,替换后的数组为 [1,1,1,0,0,1,1,1,1,1,1]。
解题思路
此题是经典的滑动窗口问题,我们可以维护窗口内0的个数,如果0的个数小于等于K,左指针不动,右指针右移,窗口不断扩张。如果0的个数大于K就收缩窗口,直到窗口内的子串合法为止,然后更新当前最长连续子数组的长度。
Python实现
class Solution:
def longestOnes(self, A: List[int], K: int) -> int:
left,right = 0,0
count = 0 #窗口内0的个数
res = 0
while(right < len(A)):
s = A[right]
right += 1
if(s == 0):
co