难度: 简单
题目
485. 最大连续 1 的个数
给定一个二进制数组, 计算其中最大连续 1 的个数。
示例:
输入:[1,1,0,1,1,1]
输出:3
解释:开头的两位和最后的三位都是连续 1 ,所以最大连续 1 的个数是 3.
提示:
- 输入的数组只包含 0 和 1 。
- 输入数组的长度是正整数,且不超过 10,000。
思路
方法一
- 将数组拼接成 string
- 借助正则表达式, 提取所有连续
1
的片段作为数组项
- 遍历数组, 找出长度最大项
方法二
- 使用 maxLength 数组来存放连续
1
的片段
- 遍历数组, 如遇
1
, 则 maxLength 最后一项加 1; 如遇0
, 则 maxLength 添加新一项
- 找出 maxLength 中最大的数值
题解
方法一
/**
* @param {number[]} nums
* @return {number}
*/
var findMaxConsecutiveOnes = function(nums) {
let str = nums.join('')
let strArr = str.match(/1+/g)
if (!strArr) return 0
let maxLength = 0
strArr.forEach(s => {
if (s.length > maxLength) maxLength = s.length
})
return maxLength
};
结果
执行用时:80 ms, 在所有 JavaScript 提交中击败了69.06%的用户
内存消耗:41.8 MB, 在所有 JavaScript 提交中击败了12.36%的用户
通过测试用例:42 / 42
方法二
let maxLength = [0]
nums.forEach(n => {
if (n !== 0) {
maxLength[maxLength.length - 1] += 1
} else {
maxLength.push(0)
}
})
return Math.max(...maxLength)
结果
执行用时:72 ms, 在所有 JavaScript 提交中击败了92.94%的用户
内存消耗:41.4 MB, 在所有 JavaScript 提交中击败了17.18%的用户
通过测试用例:42 / 42