要求
给定一个二进制数组, 计算其中最大连续 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)
解题思路:第一种解法:直接进行暴力求解,我们保留一个历史最佳res,然后使用一个值记录连续1的个数,连续1每增加一个和历史最佳进行比较,更新历史最佳。第二种解法:使用的是动态规划的思想,我们扫描到的数字为1,就和记录的前一个数字有关,为零的话,记录直接补零即可。