题目
给定一个二进制数组, 计算其中最大连续1的个数。
示例 1:
输入: [1,1,0,1,1,1]
输出: 3
解释: 开头的两位和最后的三位都是连续1,所以最大连续1的个数是 3.
注意:
- 输入的数组只包含 0 和1。
- 输入数组的长度是正整数,且不超过 10,000。
代码模板:
class Solution {
public int findMaxConsecutiveOnes(int[] nums) {
}
}
分析
这道题先循环nums,然后如果是1,并且不是最后一位,就count++,如果是0的话,并且不是第一位,并且前面一位是1的话,就说明是连续的1,把这个连续的1和之前最大的连续1做比较,找到最大值。剩下的就说明是最后一位数是1,就把count+1和最大连续1做比较,找最大值。
解答
class Solution {
public int findMaxConsecutiveOnes(int[] nums) {
int count =0;
int maxCount = 0;
for(int i=0;i<nums.length;i++){
if(nums[i] == 1 && i < nums.length -1){
count++;
}else if(nums[i] == 0){
if(i>0 &&nums[i - 1] == 1){
maxCount = Math.max(count,maxCount);
count = 0;
}
}else{
maxCount = Math.max(count+1,maxCount);
}
}
return maxCount;
}
}