코딩테스트

[leetcode] 1004. Max Consecutive One III

nayoon 2024. 6. 25. 07:20

문제

 

Sliding Window를 사용했고 0의 개수를 카운팅하면서 문제를 품.

시간 복잡도는 O(n)

class Solution {
    public int longestOnes(int[] nums, int k) {
        int num0 = 0;

        int index = 0;
        int start = 0;
        int max = 0;
        
        while(index < nums.length) {
            if (nums[index] == 1) {
                index += 1;
            }
            else {
                if (num0 < k) {
                    num0 += 1;
                    index += 1;
                } else {
                    while(nums[start++] == 1) {}
                    index += 1;
                }
            }
            
            if (index - start > max) {
                max = index - start;
            }
        }

        return max;
    }
}