Max Consecutive Ones III

유승선 ·2024년 3월 13일
0

LeetCode

목록 보기
111/121

드디어 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; 
    }
}
profile
성장하는 사람

0개의 댓글