给定一个二进制数组, 计算其中最大连续1的个数。
示例 1:
输入: [1,1,0,1,1,1]
输出: 3
解释: 开头的两位和最后的三位都是连续1,所以最大连续1的个数是 3.
注意:
- 输入的数组只包含
0
和1
。 - 输入数组的长度是正整数,且不超过 10,000。
思路:遍历一遍取出数组中0的位置,组成一个列表List = []。
1)如果列表为空,说明数组中没有0,返回二进制数组长度就行;
2)如果列表非空,考虑到接下来需要进行减法计算,给List = []添加头-1,尾添加数组长度len(nums)作为下标
3)利用List = []计算后一项减去前一项再减去1的值就是列表中每一段的1的个数,返回最大的即可
class Solution(object):
def findMaxConsecutiveOnes(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
List = []
List_last = []
for i in range(len(nums)):
if nums[i] == 0:
List.append(i)
else:
pass
if len(List) == 0:
return len(nums)
else:
List.insert(0,-1)
List.append(len(nums))
for i in range(1,len(List)):
List_last.append(List[i]-List[i-1])
return (max(List_last)-1)