题目
给定一个二进制数组, 计算其中最大连续 1 的个数。
示例:
输入:[1,1,0,1,1,1] 输出:3 解释:开头的两位和最后的三位都是连续 1 ,所以最大连续 1 的个数是 3.
解题
方法一:一次遍历(常规的思路)
max_num
是最大的连续1的个数,tmp
为当时的连续1的个数。由于最后结束还可能是1,循环内的tmp
还没和max_num
比,于是循环结束后,最后还要比一次,取最大的。
class Solution: def findMaxConsecutiveOnes(self, nums: List[int]) -> int: max_num=0 tmp=0 for num in nums: if num==0: max_num = max(max_num,tmp) tmp=0 else: tmp+=1 max_num = max(max_num,tmp) return max_num
方法二:一次遍历(保存遇到的最后一个 0 的位置)
用i - index
来表示当前连续1的个数,十分巧妙
class Solution(object): def findMaxConsecutiveOnes(self, nums): index = -1 res = 0 for i, num in enumerate(nums): if num == 0: index = i else: res = max(res, i - index) return res