Given a binary array, find the maximum number of consecutive 1s in this array.
Example 1:
Input: [1,1,0,1,1,1] Output: 3 Explanation: The first two digits or the last three digits are consecutive 1s. The maximum number of consecutive 1s is 3.
Note:
- The input array will only contain
0
and1
. - The length of input array is a positive integer and will not exceed 10,000
class Solution(object):
def findMaxConsecutiveOnes(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
answer = 0
count = 0
s = 0
a = len(nums)
print (a)
for x in range(1,a+1):
if s != a-1 and nums[s] ==1 :
count = count + 1
print (count)
elif nums[s] ==0:
if answer < count:
answer = count
count = 0
elif s == a-1 and nums[s] ==1:
count = count + 1
if answer < count:
answer = count
count = 0
s = s + 1
return answer
第一想法就是动态规划。找到目前的连续的串和过去连续的串的最大值,设为曾经最大的串。
故,设置count代表现在连续的串,anwer为过去连续的值得最大值。转移方程就是求两者的最大值。
有个技巧,就是判断count和answer最大值得时候,注意到count要包括末尾的连续的1的个数,而不仅仅是遇到0停止。所以设置的是循环变量到了nums.length,超出了数组的clength,这样的时候就使停止的判断有两个,遇到0和超出数组长度。
class Solution(object): def findMaxConsecutiveOnes(self, nums): """ :type nums: List[int] :rtype: int """ cnt = 0 ans = 0 for num in nums: if num == 1: cnt += 1 ans = max(ans, cnt) else: cnt = 0 return ans