banner
尊享面试 100 题

487. 最大连续1的个数 II

Scroll down

尊享面试 100 题是Leetcode会员专享题单

487. 最大连续1的个数 II

力扣题目链接
给定一个二进制数组 nums ,如果最多可以翻转一个 0 ,则返回数组中连续 1 的最大个数。

示例 1:

1
2
3
4
输入:nums = [1,0,1,1,0]
输出:4
解释:翻转第一个 0 可以得到最长的连续 1。
当翻转以后,最大连续 1 的个数为 4。

示例 2:

1
2
输入:nums = [1,0,1,1,0,1]
输出:4

提示:

  • 1 <= nums.length <= 105
  • nums[i] 不是 0 就是 1.

思路:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
/**
* @param {number[]} nums
* @return {number}
*/
var findMaxConsecutiveOnes = function(nums) {
let res = 0, dp0 = 0, dp1 = 0
for(let i = 0; i < nums.length; i++){
if(nums[i]){
dp0++
dp1++
}else{
dp1 = dp0 + 1
dp0 = 0
}
res = Math.max(res,Math.max(dp0,dp1))
}
return res
};
其他文章
请输入关键词进行搜索