leetcode_485 最大连续 1 的个数

95 阅读1分钟

要求

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

示例:

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

核心代码

class Solution:
    def findMaxConsecutiveOnes(self, nums: List[int]) -> int:
        res = 0
        l = 0
        for num in nums:
            if num:
                l += 1
                res  =max(l,res)
            else:
                l = 0
        return res

另一解法

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

image.png

解题思路:第一种解法:直接进行暴力求解,我们保留一个历史最佳res,然后使用一个值记录连续1的个数,连续1每增加一个和历史最佳进行比较,更新历史最佳。第二种解法:使用的是动态规划的思想,我们扫描到的数字为1,就和记录的前一个数字有关,为零的话,记录直接补零即可。