【力扣485】最大连续 1 的个数

  • 👑专栏内容:力扣刷题
  • ⛪个人主页:子夜的星的主页
  • 💕座右铭:前路未远,步履不停

目录


一、题目描述

题目链接:最大连续 1 的个数

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

二、题目分析

1、最值模拟

通过遍历数组并维护countmaxCount这两个变量来解决。其中,count 用于记录当前连续1的个数,maxCount 则用于记录遍历过程中出现的最大连续1的个数。循环遍历数组种的每一个值,如果是连续的1就让count 自增 ,当遇见0后,就让countmaxCount 进行比较,将较大的值给maxCount

java 复制代码
class Solution {
    public int findMaxConsecutiveOnes(int[] nums) {
        int maxCount  = 0; int count = 0;  //(1)
         for(int i = 0; i < nums.length; i++){  //(2)
             if(nums[i] == 1){ 
                 count++;  // (3)
             }else{
                 maxCount = Math.max(count,maxCount); //(4)
                 count = 0; //(5)
             }
         }
        maxCount = Math.max(count,maxCount); //(6)
        return maxCount;
    }
}

(1)初始化计数器countmaxCount

(2)循环遍历该数组

(3)如果一直是连续的1,count 自增

(4)遇见0了,就将countmaxCount进行比较,将较大的值赋给maxCount

(5)更新计数器count

(6)遍历完后还需要将countmaxCount进行比较,因为万一数组最后全是1,就没办法进入else 里面的语句,导致countmaxCount缺少比较。

2、双指针

我们只需要关注连续1的个数,而不需要连续1的位置信息。因此,我们可以通过维护两个指针来表示一个滑动窗口,窗口中的元素都是连续的1,而窗口的大小则由左右指针之间的距离表示。当遇到0时,我们通过更新左右指针来移动滑动窗口,找到下一个连续1的序列。

java 复制代码
class Solution {
    public int findMaxConsecutiveOnes(int[] nums) {
        int left = 0; 	//(1)
        int right = 0; 	//(2)
        int maxCount = 0; //(3)
        while (right < nums.length) {
            if (nums[right] == 0) { 
                maxCount = Math.max(maxCount, right - left);//(4)
                left = right + 1; //(5)
            }
            right++; // (6)
        }  
        maxCount = Math.max(maxCount, right - left); //(7)
        return maxCount;
    }
}

(1)左指针,指向连续1序列的起始位置

(2)右指针,用于遍历数组

(3)maxCount用于记录最大连续1个数

(4)当遇到0时,当前连续1序列结束,将当前长度与maxCount进行比较取较大值

(5)移动左指针到下一个连续1序列的起始位置

(6)右指针向右移动

(7)遍历完后还需要将countmaxCount进行比较,因为万一数组最后全是1,就没办法进入else 里面的语句,导致countmaxCount缺少比较。

相关推荐
小O的算法实验室2 分钟前
2025年COR SCI2区,考虑风场影响的无人机搜救覆盖路径规划精确界算法,深度解析+性能实测
算法·无人机·论文复现·智能算法·智能算法改进
xqqxqxxq4 分钟前
洛谷算法1-3 暴力枚举(NOIP经典真题解析)java(持续更新)
java·开发语言·算法
_OP_CHEN5 分钟前
【算法基础篇】(五十五)卡特兰数封神之路:从括号匹配到二叉树构造,组合数学的万能钥匙!
算法·蓝桥杯·c/c++·组合数学·卡特兰数·算法竞赛·acm/icpc
郝学胜-神的一滴8 分钟前
Python美学的三重奏:深入浅出列表、字典与生成器推导式
开发语言·网络·数据结构·windows·python·程序人生·算法
2501_901147838 分钟前
学习笔记:基于摩尔投票法的高性能实现与工程实践
笔记·学习·算法·性能优化
春日见11 分钟前
window wsl环境: autoware有日志,没有rviz界面/ autoware起不来
linux·人工智能·算法·机器学习·自动驾驶
rainbow688914 分钟前
PCL点云处理算法全解析
算法
代码无bug抓狂人19 分钟前
C语言之可分解的正整数(蓝桥杯省B)
c语言·开发语言·算法
量子-Alex20 分钟前
【大模型技术报告】Seed-Thinking-v1.5深度解读
人工智能·算法
Anastasiozzzz35 分钟前
对抗大文件上传---分片加多重Hash判重
服务器·后端·算法·哈希算法