【每日一题】LeetCode 485.最大连续1的个数 (数组、滑动窗口、双指针)

【每日一题】LeetCode 485.最大连续1的个数(数组、滑动窗口、双指针)

题目描述

给定一个二进制数组 nums,我们需要计算其中最大连续 1 的个数。

思路分析

这个问题可以通过一次遍历来解决。我们使用两个指针 leftright 来表示当前考虑的子数组的边界。初始时,left 指向数组的开始,right 也指向数组的开始。我们逐步移动 right 指针,直到遇到一个 0。每次遇到 0,我们就更新 left 指针的位置为 right 的位置,这样我们就得到了一个连续的 1 的序列。我们记录下这个序列的长度,并与之前记录的最大长度进行比较,更新最大长度。最后,返回最大长度即可。

输入示例

  1. 示例 1:

    • 输入:nums = [1,1,0,1,1,1]
    • 输出:3
    • 解释:开头的两位和最后的三位都是连续的 1,所以最大连续 1 的个数是 3
  2. 示例 2:

    • 输入:nums = [1,0,1,1,0,1]
    • 输出:2

代码实现

java 复制代码
class Solution {
    public int findMaxConsecutiveOnes(int[] nums) {
        // 初始化左右指针和结果变量
        int right = 0;
        int left = -1; // 将left初始化为-1,方便处理边界情况
        int res = 0; // 用于记录最大连续1的长度

        // 遍历数组
        while (right < nums.length) {
            // 如果当前元素是0,更新left指针
            if (nums[right] == 0) {
                left = right;
            } else {
                // 如果当前元素是1,更新最大长度
                res = Math.max(res, right - left);
            }
            // 移动right指针
            right++;
        }
        // 返回最大连续1的长度
        return res;
    }
}
相关推荐
M-Robots echo5 小时前
轻量化裁剪方案解析:M-Robots 模块化构建,适配高低端各类机器人硬件平台
java·机器人·ros·开源社区·atomgit·m-robots
不可求~5 小时前
多模型路由怎么落地:把任务分流写进项目的最小实现
java·前端·数据库
数模竞赛Paid answer5 小时前
2026年中青杯数学建模A题数学建模论文智能评估系统与多智能体优化方法求解全过程论文及程序
算法·数学建模·中青杯
银-豆豆5 小时前
数据结构与算法-动态规划、回溯与贪心
算法·动态规划
mldong6 小时前
用 DDD 设计工作流引擎:聚合根与充血模型
java·架构
mqiqe7 小时前
AgentScope Java Harness:4. 双层记忆系统 让 Agent 拥有真正的“长期大脑“
java·开发语言
伍一517 小时前
03-文件管理模块-一个看似简单的模块藏着多少细节
java·ruoyi·若依
想吃火锅10057 小时前
【leetcode】200. 岛屿数量
算法·leetcode·职场和发展
gugucoding7 小时前
46. 【Java】JUC并发工具:让并发更简单
java·开发语言
hold?fish:palm7 小时前
24 回文链表
数据结构·c++·链表