LeetCode 75: 1004. Max Consecutive Ones III

김준수·2024년 2월 29일
0

LeetCode 75

목록 보기
16/63
post-custom-banner

Description

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을 뒤집을 수 있습니다.

Example 1:

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의 개수입니다.

Example 2:

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의 개수입니다.

Constraints:

  • 1 <= nums.length <= 105
  • nums[i] is either 0 or 1.
  • 0 <= k <= nums.length

Solution


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;
    }
}

post-custom-banner

0개의 댓글