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.
이진 배열 nums
와 정수 k
가 주어지면 배열에서 가장 긴 연속된 1의 개수를 반환합니다. 이때 k
번 만큼 0을 뒤집을 수 있습니다.
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]
볼드처리된 글자가 가장 긴 1의 개수입니다.
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]
볼드처리된 글자가 가장 긴 1의 개수입니다.
class Solution {
public int longestOnes(int[] nums, int k) {
int maxConsentiveOne = 0;
int left = 0;
int right = 0;
int remainK = k;
while (right < nums.length) {
if(k == 0 && nums[left] == 0){
left++;
}
if (nums[right] == 0) {
if (remainK != 0) {
remainK--;
} else {
while (left < right) {
if (nums[left] == 0) {
left++;
break;
}
left++;
}
}
}
maxConsentiveOne = Math.max(maxConsentiveOne, right - left + 1);
right++;
}
return maxConsentiveOne;
}
}