思路:
使用一个窗口框出子数组, 判断如果窗口内0的个数小于等于k,则右边界增加扩大窗口。
若窗口内0的个数大于k,则左边界增加减小窗口内数据。
每次记录窗口size,获取最大值。
代码
In [1]: def longest_sub_array_with_k_replace(array, k):
...: max_len = 0
...: left, right, end = 0, 0, len(array)
...: zero_count = 0
...:
...: while right <= end:
...: if zero_count <= k:
...: print(array[left:right])
...: max_len = max(max_len, len(array[left: right]))
...: try:
...: # 若新数据位置是0, zero_count +1
...: zero_count += (not array[right])
...: except IndexError:
...: pass
...: right += 1
...: else:
...: