题目描述:
LeetCode 487. Max Consecutive Ones II
Given a binary array, find the maximum number of consecutive 1s in this array if you can flip at most one 0.
Example 1:
Input: [1,0,1,1,0] Output: 4 Explanation: Flip the first zero will get the the maximum number of consecutive 1s. After flipping, the maximum number of consecutive 1s is 4.
Note:
- The input array will only contain
0
and1
. - The length of input array is a positive integer and will not exceed 10,000
题目大意:
给定一个二进制数组,如果允许将至多一个0翻转成1,求最大连续1的个数。
注意:
- 输入数组只包含0和1
- 数组长度是正整数并且不会超过10000
解题思路:
线性遍历+计数器
统计恰好相隔1个'0'的两个连续1子数组的最大长度之和
Python代码:
class Solution(object):
def findMaxConsecutiveOnes(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
if len(nums) == sum(nums): return sum(nums)
a = b = c = 0
for n in nums:
if n == 1:
c += 1
else:
b, c = c, 0
a = max(a, b + c + 1)
return a
本文链接:http://bookshadow.com/weblog/2017/01/15/leetcode-max-consecutive-ones-ii/
请尊重作者的劳动成果,转载请注明出处!书影博客保留对文章的所有权利。
李超 发布于 2017年3月4日 10:48 #
复杂度多少
在线疯狂 发布于 2017年3月4日 12:25 #
复杂度O(n),n是数组nums的长度
Jaych Su 发布于 2018年5月14日 20:03 #
我提个 Edge Case 啊。[0, 0, 0, 0],这份代码会输出 1