返回题库

最大连续 1 的个数 III

Max Consecutive Ones III

专题
Algorithmic Programming / 算法编程
难度
L3
来源
Citadel

题目详情

问题:最大连续 1 的个数 III

考察:数组、滑动窗口、双指针

来源:Citadel

链接:https://www.jointaro.com/interviews/questions/max-consecutive-ones-iii/

Given a binary array nums and an integer k, return the maximum number of consecutive 1's in the array if you can flip at most k 0's.

 

Example 1:

Input: nums = [1,1,1,0,0,0,1,1,1,1,0], k = 2
Output: 6
Explanation: [1,1,1,0,0,1,1,1,1,1,1]
Bolded numbers were flipped from 0 to 1. The longest subarray is underlined.

Example 2:

Input: nums = [0,0,1,1,0,0,1,1,1,0,1,1,0,0,0,1,1,1,1], k = 3
Output: 10
Explanation: [0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1]
Bolded numbers were flipped from 0 to 1. The longest subarray is underlined.

 

Constraints:

  • 1 <= nums.length <= 105
  • nums[i] is either 0 or 1.
  • 0 <= k <= nums.length
解析

思路:滑动窗口中允许最多 k 个 0。右端扩展时统计 0 的数量,若超过 k 就移动左端直到合法,窗口最大长度即答案。

复杂度:时间 O(n),空间 O(1)。