给定一个二进制数组, 计算其中最大连续1的个数。
示例 1:
输入: [1,1,0,1,1,1]
输出: 3
解释: 开头的两位和最后的三位都是连续1,所以最大连续1的个数是 3.
注意:
输入的数组只包含 0 和1。
输入数组的长度是正整数,且不超过 10,000。
1/**
2 * @param {number[]} nums
3 * @return {number}
4 */
5
6var findMaxConsecutiveOnes = function (nums) {
7 if(!nums.includes(0)) return nums.length
8 var a = [], l = 0
9 // 找0
10 for(var i=0; i<nums.length; i++) {
11 if(nums[i]===0) {
12 a.push(i)
13 }
14 }
15
16 // 第一个0前面的1; ex [1,1,1,0,1,1,0,1,1,1,1]
17 l = a[0]
18 // 最后一个0后面的1;
19 var idx = a[a.length-1]
20 if(nums.length - 1 - idx > l) {
21 l = nums.length - 1 -idx
22 }
23 // 相邻两个0之间的1
24 for(var j=0; j<a.length-1; j++) {
25 if(a[j+1] - a[j] - 1 > l) {
26 l = a[j+1] - a[j] - 1
27 }
28 }
29 return l
30}