【每日一题】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;
    }
}
相关推荐
qq_124987075317 分钟前
基于微信小程序的电子元器件商城(源码+论文+部署+安装)
java·spring boot·spring·微信小程序·小程序·毕业设计
XFF不秃头20 分钟前
力扣刷题笔记-旋转图像
c++·笔记·算法·leetcode
吃喝不愁霸王餐APP开发者23 分钟前
基于Spring Cloud Gateway实现对外卖API请求的统一鉴权与流量染色
java·开发语言
a努力。26 分钟前
美团Java面试被问:Redis集群模式的工作原理
java·redis·后端·面试
王老师青少年编程33 分钟前
csp信奥赛C++标准模板库STL案例应用3
c++·算法·stl·csp·信奥赛·lower_bound·标准模版库
一雨方知深秋35 分钟前
面向对象编程
java·封装·this·构造器·static关键字·成员变量·javabean实体类
资生算法程序员_畅想家_剑魔38 分钟前
Java常见技术分享-11-责任链模式
java·spring boot·责任链模式
计算机程序设计小李同学1 小时前
动漫之家系统设计与实现
java·spring boot·后端·web安全
有为少年1 小时前
Welford 算法 | 优雅地计算海量数据的均值与方差
人工智能·深度学习·神经网络·学习·算法·机器学习·均值算法
程序员阿鹏1 小时前
责任链模式
java·spring·servlet·tomcat·maven·责任链模式