드디어 consecutive 시리즈 III 을 풀어서 다 끝냈다. 사실 이 문제도 평범한 투포인터 문제인데 문제 맥락을 잘 못 이해해서 조금 시간이 걸렸다.
투포인터의 핵심은 언제 start 포인터를 줄여야 하는지 결정해야 하고 이 문제에서는 k 가 0 이하일때 움직이는 조건으로 최소한의 조건을 맞춘 후 최대 길이를 계산 해주었다.
class Solution {
public int longestOnes(int[] nums, int k) {
int start = 0, end = 0;
int answer = Integer.MIN_VALUE;
while(end < nums.length){
if(nums[end] == 0) k--;
while(k < 0 && start < nums.length){
if(nums[start] == 0) k++;
start++;
}
answer = Math.max(answer, end - start + 1);
end++;
}
return answer;
}
}