给定一个二进制数组 nums , 计算其中最大连续 1 的个数。
示例 1:
输入:nums = [1,1,0,1,1,1]
输出:3
解释:开头的两位和最后的三位都是连续 1 ,所以最大连续 1 的个数是 3.
示例 2:
输入:nums = [1,0,1,1,0,1]
输出:2
提示:
1 <= nums.length <= 105
nums[i] 不是 0 就是 1.
方法一
思路
1、要记录连续的个数,则需要一个计数器count来记录,遍历nums,若nums[i]==1,则count+=1
2、将记录下的count放进一个数组里,若不连续,count就清零重新计算,最后返回该数组中最大的数
代码
/**
* @param {number[]} nums
* @return {number}
*/
var findMaxConsecutiveOnes = function(nums) {
let count=0;
max=[]
for(let i=0;i<=nums.length;i++){
if(nums[i]==1){
count+=1;
}else{
// 说明不连续了
// count清零
max.push(count);
count=0;
}
}
return Math.max.apply(null,max)
};
方法二
思路
1、设置遍历count作为当前连续1的计数器,设置变量maxCount作为最大count的记录
2、若不连续,将当前count与maxCount比较,重新赋值之后,count清零(不断记录最大的count)
/**
* @param {number[]} nums
* @return {number}
*/
var findMaxConsecutiveOnes = function(nums) {
let count=0;
let maxCount=0;
for(let i=0;i<nums.length;i++){
if(nums[i]==1){
// 连续
count+=1
}else{
// 不连续,将当前count与连续最大count比较,重新赋值之后,count清零
maxCount=Math.max(maxCount,count)
count=0
}
}
maxCount = Math.max(maxCount, count);
return maxCount;
};