题目描述:给定一个二进制数组 nums , 计算其中最大连续 1 的个数。
示例:
输入:nums = [1,1,0,1,1,1]
输出:3
解释:开头的两位和最后的三位都是连续 1 ,所以最大连续 1 的个数是 3.
自己第一遍的解法:
class Solution:
def findMaxConsecutiveOnes(self, nums: List[int]) -> int:
cur_max = 0
max = 0
for index, i in enumerate(nums):
if i == 1:
cur_max = cur_max+1
if cur_max>max:
max = cur_max
if index == len(nums)-1:
return max
elif nums[index+1]==0:
cur_max = 0
return max
第一遍的解法稍有不足,应该在最开始要判断下边界情况, 然后对变量的命名也有缺陷。其次比较大小取最大的那个值的过程可以直接用max来代替,不用写个if判断。所以改进版代码如下:
class Solution:
def findMaxConsecutiveOnes(self, nums: List[int]) -> int:
if nums is None or len(nums)==0:#判断当前nums是否为None或者是不是一个空数组
return 0
count = 0
result = 0
for index, num in enumerate(nums):
if num == 1:
count = count+1
else:
result = max(count,result)
count = 0
return max(count,result)