给定一个二进制数组,你可以最多将 1 个 0 翻转为 1,找出其中最大连续 1 的个数。
示例 1:
输入:[1,0,1,1,0] 输出:4 解释:翻转第一个 0 可以得到最长的连续 1。 当翻转以后,最大连续 1 的个数为 4。
注:
- 输入数组只包含
0
和1
. - 输入数组的长度为正整数,且不超过 10,000
进阶:
如果输入的数字是作为 无限流 逐个输入如何处理?换句话说,内存不能存储下所有从流中输入的数字。您可以有效地解决吗?
思路:
LeetCode-Python-1004. 最大连续1的个数 III的低级版本……
class Solution(object):
def findMaxConsecutiveOnes(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
left, right = 0, 0
zero = 0
res = 0
for right in range(len(nums)):
if nums[right] == 0:
zero += 1
while(zero > 1):
if nums[left] == 0:
zero -= 1
left += 1
res = max(res, right - left + 1)
return res