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

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.

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;
    }
}

Last updated