题目描述
给定一个二进制数组 nums , 计算其中最大连续 1 的个数。
分析
可以使用一个简单的线性扫描算法,遍历数组并计算当前连续的 1 的数量,同时记录最大连续 1 的数量
代码
python
class Solution:
def findMaxConsecutiveOnes(self, nums: List[int]) -> int:
"""
计算二进制数组中最大连续1的个数
:params: nums: - 二进制数组
:return int: - 最大连续1的个数
"""
max_count, current_count = 0, 0
for num in nums:
if num == 1:
# 当前连续1的个数
current_count += 1
else:
# 更新当前位置最大连续1的个数
max_count = max(max_count, current_count)
# 重置当前连续1的个数
current_count = 0
# 最后再更新一次最大值,以防数组以1结尾
max_count = max(max_count, current_count)
return max_count
总结
这个问题涉及到简单的线性扫描算法,通过一次遍历即可解决。时间复杂度为 O(n),空间复杂度为 O(1)。这个算法的关键在于维护两个计数器,一个记录当前连续 1 的数量,另一个记录最大连续 1 的数量。在遍历过程中不断更新和比较这两个计数器,即可得到结果。