2021年9月27日 星期一

[LeetCode] 1004. Max Consecutive Ones III

 轉自LeetCode

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

Solution



之前也有在 FB 的面試問到這題,可以用 sliding window 來解

關鍵的地方是要用個 counter 記錄目前已經用了幾個 0 了

如果 counter 小於零,那就要移動 left index,直到 counter 大於等於 0

kotlin

沒有留言:

張貼留言