# 0485. Max Consecutive Ones

<https://leetcode.com/problems/max-consecutive-ones>

## Description

Given a binary array `nums`, return *the maximum number of consecutive* `1`*'s in the array*.

**Example 1:**

```
**Input:** nums = [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.
```

**Example 2:**

```
**Input:** nums = [1,0,1,1,0,1]
**Output:** 2
```

**Constraints:**

* `1 <= nums.length <= 105`
* `nums[i]` is either `0` or `1`.

## ac1: two pointers

```java
class Solution {
    public int findMaxConsecutiveOnes(int[] nums) {
        // edge cases
        if (nums == null || nums.length == 0) return 0;

        int f = 1, s = 0;
        int len = 0;
        for (; f < nums.length; f++) {
            if (nums[f] == nums[f-1]) continue;  // same
            if (nums[f-1] == 1) len = Math.max(len, f - s);
            s = f;
        }
        if (nums[f-1] == 1) len = Math.max(len, f - s);

        return len;
    }
}
```

## ac2: counting

data stream model, careful about last one.

```java
class Solution {
    public int findMaxConsecutiveOnes(int[] nums) {
        // edge cases
        if (nums == null || nums.length == 0) return 0;

        int len = 0,cnt = 0;
        for (int i = 0; i < nums.length; i++) {
            if (nums[i] == 1) {
                cnt++;
            } else {
                len = Math.max(len, cnt);
                cnt = 0;
            }
        }
        len = Math.max(len, cnt);

        return len;
    }
}
```
