leetcode 485 max consecutive ones

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

Example 1:

1
2
3
4
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

The basic idea is to set an tag recording the maxium ones at present.

when current number is One, current++

when current number is Zero, copy the max one to max

In case a situation where all the numbers are One, e.g. [1, 1, 1]

current == 3 , however, there is no Zero, so max still should be 0,

you should return the max of current and max

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class  {
public int findMaxConsecutiveOnes(int[] nums) {
int max = 0;
int current = 0;
for(int i=0; i<nums.length; i++){
if(nums[i] == 1){
current ++;
}
else{
max = Math.max(max, current);
current = 0;
}
}
return max = Math.max(max, current);
}
}