LeetCode-Python-485. 最大连续1的个数

给定一个二进制数组, 计算其中最大连续1的个数。

示例 1:

输入: [1,1,0,1,1,1]
输出: 3
解释: 开头的两位和最后的三位都是连续1,所以最大连续1的个数是 3.

注意:

  • 输入的数组只包含 0 和1
  • 输入数组的长度是正整数,且不超过 10,000。

第一种思路:

直接暴力求解。

class Solution(object):
    def findMaxConsecutiveOnes(self, nums):
        """
        :type nums: List[int]
        :rtype: int
        """
        
        res = 0
        l = 0
        for i in nums:
            if i:
                l += 1
                res = max(l, res)
            else:                
                l = 0
        return res

第二种思路:

动态规划,用dp[i]表示从0~ i 的最长连续1序列的长度,

显然dp[0] = nums[0],

对于i!= 0 的情况,有

dp[i] = dp[i - 1] + 1 if nums[i] == 1  OR

dp[i] = 0 if nums[i] != 1

class Solution(object):
    def findMaxConsecutiveOnes(self, nums):
        """
        :type nums: List[int]
        :rtype: int
        """
        dp = [nums[0]]
        for i in range(1, len(nums)):
            if nums[i]:
                dp.append(dp[i-1] + 1)
            else:
                dp.append(0)
        # print dp
        return max(dp)

 

你可能感兴趣的:(Leetcode,Python)