直接上题:
-
给定一个二进制数组, 计算其中最大连续1的个数。
示例 1: 输入: [1,1,0,1,1,1] 输出: 3 解释: 开头的两位和最后的三位都是连续1,所以最大连续1的个数是 3. 注意: 输入的数组只包含0 和1。 输入数组的长度是正整数,且不超过 10,000。
解题思路:
- 要求使用数组
- 计算连续的1,每出现一次,累加 1
- 遇到 0 后终止累加,
- 求累加后的值的最大值
由此 可以设置一个变量count = 0
,用于累加,设置一个变量result = 0
,用于存放最大值。
上代码:
/**
* @author 此间乐
* @create 2020-12-15-20:34
*/
public class FindMaxConsecutiveOnes {
public int findMaxConsecutiveOnes(int[] nums){
int count = 0; //有 1 时累加计算
int result = 0;//用于存放最大的结果
if (nums == null || nums.length == 0 || nums.length > 10000){ //首先判断传进来的数组是不是空数组
return 0;
}
for (int i = 0; i < nums.length; i++) { //遍历数组,如果数组中存在1的时候,使用count+1累加
if (nums[i] == 1){
count = count + 1;
}else{ //为0时进入这一步
result = Math.max(result,count); //比较count 和 result大小,把大的一方存到result
count = 0; //比较完成后,将count置零,用于下一次连续 1 的累加
}
}
return Math.max(result,count); //假如最大的值出现在最后一次
}
}