106 - 485最大连续1的个数
题目
给定一个二进制数组, 计算其中最大连续1的个数。
示例 1:
输入: [1,1,0,1,1,1] 输出: 3 解释: 开头的两位和最后的三位都是连续1,所以最大连续1的个数是 3.
注意:
输入的数组只包含 0 和1。
输入数组的长度是正整数,且不超过 10,000。
解答
只能想到,用指针遍历,记录最大值
变成字符串,再根据0split
作者:QQqun902025048
/**
* @param {number[]} nums
* @return {number}
*/
var findMaxConsecutiveOnes = function (nums) {
const str = nums.join('')
const arr = str.split('0')
let max = 0
for (const item of arr) {
if (item.length > max) {
max = item.length
}
}
return max
};
Runtime: 80 ms, faster than 12.81% of JavaScript online submissions for Max Consecutive Ones.
Memory Usage: 37.4 MB, less than 11.11% of JavaScript online submissions for Max Consecutive Ones.
class Solution:
def findMaxConsecutiveOnes(self, nums: List[int]) -> int:
return len(max(''.join(map(str, nums)).split('0')))
Runtime: 428 ms, faster than 36.70% of Python3 online submissions for Max Consecutive Ones.
Memory Usage: 14.5 MB, less than 7.69% of Python3 online submissions for Max Consecutive Ones.
双变量
class Solution:
def findMaxConsecutiveOnes(self, nums: List[int]) -> int:
ans = temp = 0
for num in nums:
if num:
temp += 1
else:
ans = max(ans, temp)
temp = 0
return max(ans, temp)
Runtime: 404 ms, faster than 78.87% of Python3 online submissions for Max Consecutive Ones.
Memory Usage: 14.2 MB, less than 7.69% of Python3 online submissions for Max Consecutive Ones.
/**
* @param {number[]} nums
* @return {number}
*/
var findMaxConsecutiveOnes = function (nums) {
let ans = 0, temp = 0
for (const item of nums) {
if (item) {
temp += 1
} else {
ans = Math.max(ans, temp)
temp = 0
}
}
return Math.max(ans, temp)
};
Runtime: 72 ms, faster than 29.02% of JavaScript online submissions for Max Consecutive Ones.
Memory Usage: 37.4 MB, less than 22.22% of JavaScript online submissions for Max Consecutive Ones.
func max(a, b int) int {
if a >= b {
return a
} else {
return b
}
}
func findMaxConsecutiveOnes(nums []int) int {
var ans, temp int
for _, value := range nums {
if value == 1 {
temp += 1
} else {
ans = max(ans, temp)
temp = 0
}
}
return max(ans, temp)
}
Runtime: 36 ms, faster than 94.33% of Go online submissions for Max Consecutive Ones.
Memory Usage: 6.3 MB, less than 100.00% of Go online submissions for Max Consecutive Ones.
动态规划
class Solution:
def findMaxConsecutiveOnes(self, nums: List[int]) -> int:
if len(nums) == 0:
return 0
dp = [-1]*len(nums)
if nums[0] == 1:
dp[0] = 1
else:
dp[0] = 0
for i in range(1, len(nums)):
if nums[i] == 1:
dp[i] = dp[i-1]+1 if dp[i-1] != -1 else 1
else:
dp[i] = 0
return max(dp)
Runtime: 404 ms, faster than 64.84% of Python3 online submissions for Max Consecutive Ones.
Memory Usage: 13.2 MB, less than 88.46% of Python3 online submissions for Max Consecutive Ones.
Last updated
Was this helpful?