JavaScript算法每日一题最大连续1的个数

每日一题:每天一个新挑战;
循序渐进:从易到难,扎实掌握;
系统分类:按数据结构分类,有助于构建知识框架;
丰富题量: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.

代码卡片

JavaScript算法每日一题最大连续1的个数

题目解析

本题要求计算给定二进制数组中最大连续 1 的个数。我们可以使用一次遍历来解决这个问题,在遍历过程中,使用一个变量来记录当前连续 1 的个数,并在遇到 0 时进行重置,更新最大连续 1 的个数。

方法一:一次遍历

1、 初始化两个变量:max_count 用来记录最大连续 1 的个数,current_count 用来记录当前连续 1 的个数。

2、遍历数组 nums

  • 如果元素为 1,则 current_count1,并更新 max_countmax(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
站内所有文章皆来自网络转载或读者投稿,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。敬请谅解!

(0)
股市刺客的头像股市刺客
上一篇 3小时前
下一篇 3小时前

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注