原题链接在这里:https://leetcode.com/problems/max-consecutive-ones-iii/

题目:

Given an array A of 0s and 1s, we may change up to K values from 0 to 1.

Return the length of the longest (contiguous) subarray that contains only 1s. 

 

Example 1:

Input: A = 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: A = 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.

Note:

  1. 1 <= A.length <= 20000
  2. 0 <= K <= A.length
  3. A[i] is 0 or 1 

题解:

Same idea as Max Consecutive Ones II.

Solution is easy to extend from 1 to K.

Time Complexity: O(n). n = A.length.

Space: O(1).

AC Java:

 1 class Solution {
 2     public int longestOnes(int[] A, int K) {
 3         if(A == null || A.length == 0){
 4             return 0;
 5         }
 6         
 7         int count = 0;
 8         int walker = 0;
 9         int runner = 0;
10         int res = 0;
11         while(runner < A.length){
12             if(A[runner++] != 1){
13                 count++;
14             }
15             
16             while(count > K){
17                 if(A[walker++] != 1){
18                     count--;
19                 }
20             }
21             
22             res = Math.max(res, runner-walker);
23         }
24         
25         return res;
26     }
27 }

 

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-07-31
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2021-12-16
  • 2021-10-08
  • 2022-12-23
  • 2021-11-14
  • 2021-08-24
相关资源
相似解决方案