# 485-最大连续 1 的个数

来源:力扣(LeetCode)

链接:https://leetcode.cn/problems/max-consecutive-ones

著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

# 一、题目描述

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

示例 1:

输入:nums = [1,1,0,1,1,1]

输出:3

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

示例 2:

输入:nums = [1,0,1,1,0,1]

输出:2

提示:

  • 1 <= nums.length <= 105
  • nums[i]  不是  0  就是  1.

# 二、解法

遍历 nums

  • 为 1 的时候就 thisCount++
  • 为 0 的时候 thisCount 置为 0,重新累加。

代码实现:

class Solution {
public:
    int findMaxConsecutiveOnes(vector<int>& nums) {
        if (nums.size() == 1) {
            if(nums[0] == 1) {
                return 1;
            }else {
                return 0;
            }
        }

        int maxCount = 0;
        int thisCount = 0;
        for (int i = 0; i < nums.size(); i++) {
            if (nums[i] == 1) {
                thisCount++;
                if (maxCount < thisCount) {
                    maxCount = thisCount;
                }
            }
            else if (nums[i] == 0) {
                thisCount = 0;
            }
        }
        return maxCount;
    }
};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27