每日一题:每天一个新挑战;
循序渐进:从易到难,扎实掌握;
系统分类:按数据结构分类,有助于构建知识框架;
丰富题量:100 道精选题,覆盖简单/中等/困难难度。
给定一个二进制数组 nums , 计算其中最大连续 1 的个数。
示例 1:
输入:nums = [1,1,0,1,1,1]
输出:3
解释:开头的两位和最后的三位都是连续 1 ,所以最大连续 1 的个数是 3.
示例 2:
输入:nums = [1,0,1,1,0,1]
输出:2
提示:
- 1 <= nums.length <= 10^5
- nums[i] 不是 0 就是 1.
代码卡片

题目解析
本题要求计算给定二进制数组中最大连续 1 的个数。我们可以使用一次遍历来解决这个问题,在遍历过程中,使用一个变量来记录当前连续 1 的个数,并在遇到 0 时进行重置,更新最大连续 1 的个数。
方法一:一次遍历
1、 初始化两个变量:max_count 用来记录最大连续 1 的个数,current_count 用来记录当前连续 1 的个数。
2、遍历数组 nums:
- 如果元素为 1,则 current_count 加 1,并更新 max_count 为 max(current_count, max_count)。
- 如果元素为 0,则将 current_count 重置为 0。
3、返回 max_count 作为最终结果。
- 时间复杂度: O(n),其中 n 是数组 nums 的长度。我们只需要一次遍历数组。
- 空间复杂度: O(1),我们只使用了常数的额外空间。
var findMaxConsecutiveOnes = function (nums) {
let max_count = 0;
let current_count = 0;
for (let num of nums) {
if (num === 1) {
current_count++;
max_count = Math.max(max_count, current_count);
} else {
current_count = 0;
}
}
return max_count;
}
发布者:股市刺客,转载请注明出处:https://www.95sca.cn/archives/288994
站内所有文章皆来自网络转载或读者投稿,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。敬请谅解!