Featured image of post Max Consecutive Ones

Max Consecutive Ones

485. 最大连续1的个数

分析

  1. 遍历数组 nums ,逐一检查每个元素:
    • 如果当前元素是 0,跳过,继续处理下一个元素
    • 如果当前元素是 1,启动一个内部循环计算当前连续 1 的长度
  2. 记录每次计算到的连续 1 的长度,用变量 res 保持记录最大值
  3. 在外部循环中,将索引移动到连续 1 的区间结束位置,避免重复计算

时间复杂度

时间复杂度 O(n)

空间复杂度

空间复杂度为 O(1)

C++代码

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
class Solution {
public:
    int findMaxConsecutiveOnes(vector<int>& nums)
    {
        int res = 0; // 最大连续 1 的长度
        for (int i = 0; i < nums.size(); ++i) // 遍历数组
        {
            if (nums[i] == 0) // 如果当前是 0,跳过
                continue;

            int j = i + 1; // 进入内部循环,计算连续 1 的长度
            while (j < nums.size() && nums[j] == 1)
                ++j;

            res = std::max(res, j - i); // 更新最大连续长度
            i = j; // 将索引移动到连续 1 的区间结束位置
        }
        return res;
    }
};
Built with Hugo
Theme Stack designed by Jimmy