zoukankan      html  css  js  c++  java
  • [LeetCode] Max Consecutive Ones 最大连续1的个数

    Given a binary array, find the maximum number of consecutive 1s in this array.

    Example 1:

    Input: [1,1,0,1,1,1]
    Output: 3
    Explanation: The first two digits or the last three digits are consecutive 1s.
        The maximum number of consecutive 1s is 3.
    

    Note:

    • The input array will only contain 0 and 1.
    • The length of input array is a positive integer and will not exceed 10,000

    这道题让我们求最大连续1的个数,不是一道难题。我们可以遍历一遍数组,用一个计数器cnt来统计1的个数,方法是如果当前数字为0,那么cnt重置为0,如果不是0,cnt自增1,然后每次更新结果res即可,参见代码如下:

    解法一:

    class Solution {
    public:
        int findMaxConsecutiveOnes(vector<int>& nums) {
            int res = 0, cnt = 0;
            for (int num : nums) {
                cnt = (num == 0) ? 0 : cnt + 1;
                res = max(res, cnt);
            }
            return res;
        }
    };

    由于是个二进制数组,所以数组中的数字只能是0或1,那么连续1的和跟个数相等,所以我们可以计算和,通过加上num,再乘以num来计算,如果当前数字是0,那么sum就被重置为0,还是要更新结果res,参见代码如下:

    解法二:

    class Solution {
    public:
        int findMaxConsecutiveOnes(vector<int>& nums) {
            int res = 0, sum = 0;
            for (int num : nums) {
                sum = (sum + num) * num;
                res = max(res, sum);
            }
            return res;
        }
    };

    LeetCode All in One 题目讲解汇总(持续更新中...)

  • 相关阅读:
    《驱动学习
    《海思3521D
    《uboot网卡驱动分析》
    《驱动学习
    《驱动学习
    《驱动学习
    对应第一篇文章api的编写
    Dot模板的使用小结2
    项目代码摘抄,dot的用法之1
    文字的默认基线是底部对齐的
  • 原文地址:https://www.cnblogs.com/grandyang/p/6360942.html
Copyright © 2011-2022 走看看