zoukankan      html  css  js  c++  java
  • LeetCode题解 | [简单-数组] 485.最大连续1的个数

    题目

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

    示例 1:

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

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

    思路

    输入大致可分为这几种情况:

    1. 全是1
    2. 全是0
    3. 0开始0结束
    4. 0开始1结束
    5. 1开始0结束
    6. 1开始1结束

    使用一个状态标记inOne来标识上一个位置是在0中还是在1中。
    上一个位置为0且遇到1时,开始计数并转换状态。
    上一个位置为1且遇到0时,计数完成,并将当前计数值与此前最大值比较,更新最大值。
    循环结束后,需要特判,若最后一位是1,那么还要进行一次更新。

    代码

    /* 2020/10/24 */
    class Solution {
    public:
        int findMaxConsecutiveOnes(vector<int>& nums) {
            int maxConsecutive = 0;
            int cnt = 0;
            bool inOne = false;
    
            for (int i = 0; i < nums.size(); i++) {
                switch (nums[i]) {
                    case 0:
                        if (true == inOne) {
                            maxConsecutive = max(maxConsecutive, cnt);
                            cnt = 0;
                        }
                        break;
                    case 1:
                        ++cnt;
                        if (false == inOne) {
                            inOne = true;
                        }
                        break;
                    default:
                        break;
                }
            }
            if (true == inOne) {
                maxConsecutive = max(maxConsecutive, cnt);
            }
            
            return maxConsecutive;
        }
    };
    
  • 相关阅读:
    微信小程序 数组索引 data-“”解释
    Aho-Corasick算法原理(图省事我直接粘贴PPT了)
    神奇的人生
    nginx-学习笔记9
    nginx-学习笔记8
    nginx-学习笔记7
    nginx-学习笔记6
    nginx-学习笔记5
    nginx-学习笔记4
    nginx-学习笔记2
  • 原文地址:https://www.cnblogs.com/DylanLiuH2O/p/14397164.html
Copyright © 2011-2022 走看看