公衆號:愛寫bugjava
給定一個二進制數組, 計算其中最大連續1的個數。python
Given a binary array, find the maximum number of consecutive 1s in this array.數組
示例 1:this
輸入: [1,1,0,1,1,1] 輸出: 3 解釋: 開頭的兩位和最後的三位都是連續1,因此最大連續1的個數是 3.
注意:指針
0
和1
。Note:code
0
and 1
. 記錄一個指針向右移動,用一個數記錄1的個數,遇1就累加1,遇0就倒置爲0。具體見 Java 註釋。input
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中較大的數 } }
注意:it
返回值必須是count
與temp
中較大的一個。明明已經比較了count
和temp
,並把較大的賦值給count
,很明顯是count
更大,爲何還要比較?io
這是由於還有一種輸入數組全爲1的狀況,此時temp一直累加,從未遇到0,因此count自始至終都不可能獲得temp的值。class
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