最大连续 1 的个数
给定一个二进制数组, 计算其中最大连续 1 的个数。
示例:
输入:[1,1,0,1,1,1]
输出:3
解释:开头的两位和最后的三位都是连续 1 ,所以最大连续 1 的个数是 3.
思路
解法一:
使用双指针法,定义左指针i
在-1位置,使用右指针j
遍历数组元素。
- 若遍历到的元素
num
为1,则直接使用j - i
,得到最大个数ans
- 否则将
j
赋值给i
,这里将i
定义为-1是为了运算方便
class Solution:
def findMaxConsecutiveOnes(self, nums: List[int]) -> int:
i = -1
ans = 0
for j, num in enumerate(nums):
if num == 1:
ans = max(ans, j - i)
else:
i = j
return ans
解法二:
定义一个标志位count
用来标志是否为1,如果为1则将count
加1,否则重置为0.
class Solution:
def findMaxConsecutiveOnes(self, nums: List[int]) -> int:
maxCount = count = 0
for i, num in enumerate(nums):
if num == 1:
count += 1
else:
maxCount = max(maxCount, count)
count = 0
maxCount = max(maxCount, count)
return maxCount