• 最大连续 1 的个数


    toc

    题目描述:

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

    示例:

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

    提示:

    输入的数组只包含 0 和 1 。
    输入数组的长度是正整数,且不超过 10,000。

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/max-consecutive-ones
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

    思路

    常规思路,遍历输入数组,
    遇1增加当前连续个数,并进入下次循环,
    遇0比较最大连续个数与当前连续个数,并按条件更新最大连续个数,随后清零当前连续个数,继续循环寻找1
    数组末元素也许不是0,结束遍历后,需再比较保存最大连续个数

    代码

    class Solution {
    public:
        int findMaxConsecutiveOnes(std::vector<int>& nums){
            int iMaxCount = 0;
            int iCurrentCount = 0;
            for(auto& elem : nums){
                if(elem == 1){
                    iCurrentCount++;
                    continue;
                }
                if(iCurrentCount > iMaxCount){
                    iMaxCount = iCurrentCount;            
                }
                iCurrentCount = 0;
            }
            if(iCurrentCount > iMaxCount){
                iMaxCount = iCurrentCount;
                iCurrentCount = 0;
            }
    
            return iMaxCount;
        }
    };

    网友思路

    提交后,看了下网友的解题思路,有使用到滑动窗口,感觉很棒,学习一下,思路如下:
    定义左右窗口指针并初始化为0,
    遍历输入数组,遇到1则不断移动右指针,直到遇到0,
    此时,计算连续1个数为右左指针差,比较保存最大连续1个数,
    接着将左指针指向右指针处,
    最后继续循环
    循环结束后,比较保存最大连续1个数





    原创不易,转载请注明出处,谢谢
  • 相关阅读:
    geoserver发布mysql表数据
    geoserver1
    geoserver
    快速搭建arcgis以及cesium环境
    openlayers和cesium实现地图二三维切换
    记Mysql类型引起的BUG
    OpenLayers 图层(Layers) 详解
    基于TrueLicense实现产品License验证功能
    第七章
    第六周进度报告
  • 原文地址:https://www.cnblogs.com/Keeping-Fit/p/14608218.html
Copyright © 2020-2023  润新知