复制
收藏
提问
全网
给定一个二进制数组, 计算其中最大连续 1 的个数。 示例: 输入:[1,1,0,1,1,1] 输出:3 解释:开头的两位和最后的三位都是连续 1 ,所以最大连续 1 的个数是 3.
5月前
理解问题给定一个二进制数组, 计算其中最大连续 1 的个数。 示例: 输入:[1,1,0,1,1,1] 输出:3 解释:开头的两位和最后的三位都是连续 1 ,所以最大连续 1 的个数是 3.
已完成理解「给定一个二进制数组, 计算其中最大连续 1 的个数。 示例: 输入:[1,1,0,1,1,1] 输出:3 解释:开头的两位和最后的三位都是连续 1 ,所以最大连续 1 的个数是 3.」
展开阅读网页
回答简洁
更专业一些
给定一个二进制数组,我们的目标是计算其中最大连续1的个数。这个问题可以通过多种方法解决,但一种常见的方法是使用滑动窗口技术。以下是解决这个问题的一种方法:
解题思路
- 初始化两个变量,
max_count
用于存储最大连续1的个数,count
用于存储当前连续1的个数。 - 遍历数组,对于每个元素:
- 如果元素是1,则增加
count
。 - 如果元素是0或者遍历结束,则比较
count
和max_count
,如果count
更大,则更新max_count
。 - 重置
count
为0,因为连续序列已经被中断。
- 如果元素是1,则增加
代码实现
class Solution:
def findMaxConsecutiveOnes(self, nums):
max_count = 0
count = 0
for num in nums:
if num == 1:
count += 1
else:
max_count = max(max_count, count)
count = 0
return max(max_count, count) # 确保在数组末尾的连续1也被计算
示例
以输入数组 [1,1,0,1,1,1]
为例,按照上述方法,我们可以得到以下结果:
- 初始时,
max_count
和count
都为0。 - 遍历到第一个1,
count
变为1。 - 继续遍历到第二个1,
count
变为2。 - 遇到0,
count
重置为0,此时max_count
更新为2。 - 继续遍历,遇到第三个1,
count
变为1。 - 再遇到第四个和第五个1,
count
变为3。 - 由于没有更多的0来中断连续1,最后
max_count
更新为3。
注意事项
通过上述方法,我们可以有效地计算出给定二进制数组中最大连续1的个数。