最大连续 1 的个数

题目链接

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

示例:

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

思路

解法一:

使用双指针法,定义左指针i在-1位置,使用右指针j遍历数组元素。

  1. 若遍历到的元素num为1,则直接使用j - i,得到最大个数ans
  2. 否则将j赋值给i,这里将i定义为-1是为了运算方便
class Solution:
    def findMaxConsecutiveOnes(self, nums: List[int]) -> int:
        i = -1
        ans = 0
        for j, num in enumerate(nums):
            if num == 1:
                ans = max(ans, j - i)
            else:
                i = j
        return ans

解法二:

定义一个标志位count用来标志是否为1,如果为1则将count加1,否则重置为0.

class Solution:
    def findMaxConsecutiveOnes(self, nums: List[int]) -> int:
        maxCount = count = 0

        for i, num in enumerate(nums):
            if num == 1:
                count += 1
            else:
                maxCount = max(maxCount, count)
                count = 0
        
        maxCount = max(maxCount, count)
        return maxCount