Given a binary array, find the maximum number of consecutive 1s in this array.
Example 1:
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
and1
. - The length of input array is a positive integer and will not exceed 10,000
public class Solution {
public int findMaxConsecutiveOnes(int[] nums) {
int conNum = 0;
int maxNum = 0;
for(int i = 0; i < nums.length; i++){
if(nums[i] == 1) {
conNum++;
}else{
if(conNum > maxNum){
maxNum = conNum;
}
conNum = 0;
}
}
if(maxNum > conNum)
return maxNum;
else
return conNum;
}
}
public int findMaxConsecutiveOnes(int[] nums) {
int conNum = 0;
int maxNum = 0;
for(int i = 0; i < nums.length; i++){
if(nums[i] == 1) {
conNum++;
}else{
if(conNum > maxNum){
maxNum = conNum;
}
conNum = 0;
}
}
if(maxNum > conNum)
return maxNum;
else
return conNum;
}
}
This is a really easy problem. No explanation :)
public class Solution {
public int findMaxConsecutiveOnes(int[] nums) {
int result = 0;
int count = 0;
for (int i = 0; i < nums.length; i++) {
if (nums[i] == 1) {
count++;
result = Math.max(count, result);
}
else count = 0;
}
return result;
}
}
Use the fact that multiplication with 0 resets everything..
int findMaxConsecutiveOnes(int* nums, int numsSize) {
int max = 0;
int sum = 0;
for (int i=0; i<numsSize; i++)
{
sum = (sum+nums[i])*nums[i];
if(max<sum){max=sum;}
}
return max;
}