原题链接在这里: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 <= A.length <= 20000
0 <= K <= A.length
A[i]
is0
or1
题解:
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 }