题目要求:思路:1出现的次数在两个0之间,或者说从数组头到第一个0,从最后一个0到数组尾。于是定义a次,记录1出现的次数,初值为0,定义一个索引,记录第一个1出现的位置,初值为0,遍历数组,当出现0时,减去从出现0的下标开始索引,将减去的值与times进行比较,较大的赋值给times。遍历后index的当前值为最后一个0出现的位置+1,所以不计算index和后面的1在数组中的个数。使用数组的长度-index与times进行比较,将较大的赋值给times核心代码:#index记录每次连续出现的第一个1的位置,初始值为数组头,即,0index=0#用来记录1连续出现的最大次数times=0#遍历数组,如果值为0时,从当前下标减去index,求出当前字符串1的个数,将当前数与上一条记录中出现过的数进行比较,将较大的赋值给times,index+1,记录下一个字符串中出现的连续1的第一个位置foriinrange(len(nums)):ifnums[i]==0:times=max(times,i-index)index=i+1#数组循环结束后,index后面出现的1的个数还没有被记录,所以indextimes=max(times,len(nums)-index)returntimes减去数组长度加上判断语句数组是否为空完整代码:classSolution(object):deffindMaxConsecutiveOnes(self,nums):""":typenums:List[int]:rtype:int"""iflen(nums)==0:returnNoneindex=0times=0foriinrange(len(nums)):ifnums[i]==0:times=max(times,i-index)index=i+1times=max(times,len(nums)-index)返回次数
