[LeetCode][Python]485. 最大连续1的个数
给定一个二进制数组, 计算其中最大连续1的个数。
示例 1:
输入: [1,1,0,1,1,1]
输出: 3
解释: 开头的两位和最后的三位都是连续1,所以最大连续1的个数是 3.
注意:
输入的数组只包含 0 和1。
输入数组的长度是正整数,且不超过 10,000。
思路:
-
单指针遍历,若遇到1,flag + 1, 遇到0,判断此时flag是否大于ans记录的个数,若是,令ans = flag,且让flag初始化。 若否,只让flag初始化。最终剩下的ans就是最大连续1的个数。
-
把数组转成字符串后,使用0去split
-
定义两个指针:结果指针和计数指针res,counter。依次遍历数组,如果值是1,则counter+1,否则,结果值取当前结果值和counter的最大值,counter复位为0
#! /usr/bin/env python
#coding=utf-8
class Solution(object):
def findMaxConsecutiveOnes(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
flag = 0
ans = 0
for e in nums:
if e ==1:
flag += 1
else:
if ans < flag:
ans = flag
flag = 0
else:
flag = 0
if ans < flag:
ans = flag
return ans
def findMaxConsecutiveOnes2(self, nums):
return len(max(''.join(map(str, nums)).split("0")))
def findMaxConsecutiveOnes3(self, nums):
res = counter = 0
for n in nums:
if n:
counter += 1
else:
res = max(res, counter)
counter = 0
return max(res, counter)
网友评论