Given a binary array nums, return the maximum number of consecutive1'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;
}
}