最大连续 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