描述:
给定一个二进制数组 nums , 计算其中最大连续 1 的个数。
示例 1: 输入:nums = [1,1,0,1,1,1] 输出:3 解释:开头的两位和最后的三位都是连续 1 ,所以最大连续 1 的个数是 3.
示例 2: 输入:nums = [1,0,1,1,0,1] 输出:2
解决方案:
1、暴力遍历
public static int findMaxConsecutiveOnes(int[] nums) {
int i, maxNumberOne = 0, numberOne=0;
for(i=0; i<nums.length; i++){
if(nums[i]==1){
numberOne++;
}else {
numberOne=0;
}
if (numberOne>maxNumberOne){
maxNumberOne=numberOne;
}
}
return maxNumberOne;
}
2、动态规划
传递数组中的值只有0和1,利用动态规划思想,直接对原有数组进行覆盖,最后选出最大值即可!
public static int findMaxConsecutiveOnes(int[] nums) {
int i, maxNumberOne = 0;
for(i=1; i<nums.length; i++){
if(nums[i]==1){
nums[i] = nums[i-1] + 1;
}else {
nums[i] = 0;
}
}
for( i=0; i<nums.length; i++){
if(nums[i]>maxNumberOne){
maxNumberOne=nums[i];
}
}
return maxNumberOne;
}
\