[LeetCode]Max Consecutive Ones II

题目描述:

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 and 1.
  • 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/
请尊重作者的劳动成果,转载请注明出处!书影博客保留对文章的所有权利。

如果您喜欢这篇博文,欢迎您捐赠书影博客: ,查看支付宝二维码

Pingbacks已关闭。

评论
  1. 李超 李超 发布于 2017年3月4日 10:48 #

    复杂度多少

  2. 在线疯狂 在线疯狂 发布于 2017年3月4日 12:25 #

    复杂度O(n),n是数组nums的长度

  3. Jaych Su Jaych Su 发布于 2018年5月14日 20:03 #

    我提个 Edge Case 啊。[0, 0, 0, 0],这份代码会输出 1

张贴您的评论