当前位置 : 主页 > 手机开发 > ROM >

LeetCode 1004. Max Consecutive Ones III

来源:互联网 收集:自由互联 发布时间:2021-06-10
原题链接在这里: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.

原题链接在这里: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 = [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: A = [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.

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 }
上一篇:ContextLoader
下一篇:Promise
网友评论