公众号:爱写bug
给定一个二进制数组, 计算其中最大连续1的个数。
Given a binary array, find the maximum number of consecutive 1s in this array.
输入: [1,1,0,1,1,1] 输出: 3 解释: 开头的两位和最后的三位都是连续1,所以最大连续1的个数是 3.
0
和 1
。 0
and 1
. 记录一个指针向右移动,用一个数记录1的个数,遇1就累加1,遇0就倒置为0。具体见 Java 注释。
class Solution{ public int findMaxConsecutiveOnes(int[] nums) { int temp=0,count=0;//temp记录当前连续1的个数,count记录当前最大连续1的个数 for (int i=0;i<nums.length;i++){//指针右移 if(nums[i]==1){ temp++;//遇1累加1 }else{ if(count<temp){ count=temp;//记录目前最大连续1的个数 } temp=0;//遇0倒置为0 } } return (count>temp)? count:temp;//返回count、temp中较大的数 } }
返回值必须是 count
与 temp
中较大的一个。明明已经比较了 count
和 temp
,并把较大的赋值给 count
,很明显是 count
更大,为什么还要比较?
这是因为还有一种输入数组全为1的情况,此时temp一直累加,从未遇到0,所以count自始至终都不可能得到temp的值。
class Solution: def findMaxConsecutiveOnes(self, nums: List[int]) -> int: count=temp=0 for num in nums: if num==1: temp+=1 else: if(count<temp): count=temp temp=0 return count if count>temp else temp