class Solution(object):
def findMaxConsecutiveOnes(self, nums):
num_list=list()
max_list=list()
for a in nums:
if a==1:
num_list.append(a)
else:
max_list.append(num_list.count(1))
num_list=[]
max_list.append(num_list.count(1)) # for的null check
num_list=[]
return max(max_list)
别人的优解
class Solution:
def findMaxConsecutiveOnes(self, nums):
ret = count = 0
nums.append(0)
for i in nums:
if i == 1:
count += 1
else:
ret = max(ret, count)
count = 0
return ret
作者:qingfengpython
链接:https://leetcode-cn.com/problems/max-consecutive-ones/solution/485zui-da-lian-xu-1de-ge-shu-yi-ci-bian-jkt8i/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
分析
这里我们需要初始化两个ret、count两个int类型的变量。
count用于记录在数组中某一段连续1的数量
当这段1遇到0时,此时我们ret = max(ret,count)比较,将ret更新为更大的连续1数量
count重置为0 ,然后开启下一次循环
这里要注意下,如果数组以1结果会导致缺失最后一次比较,所以在结尾需要在进行一次比较操作即可。
PS: 由于Java数组追加较为麻烦,Python可以给数组append一个0,避免4操作。