Daily LeetCode Challenge - 1493. Longest Subarray of 1's After Deleting One Element

Min Young Kim·2023년 7월 5일
0

algorithm

목록 보기
187/198

Problem From.

https://leetcode.com/problems/longest-subarray-of-1s-after-deleting-one-element/

오늘 문제는 주어진 nums array 에서 하나의 원소만을 뺄 수 있다고 하였을때, 1로만 이루어진 가장 긴 subarray 의 길이를 구하는 문제였다.

이 문제는 sliding window 를 이용하여 풀 수 있었는데,
먼저 지워진 원소의 갯수를 의미하는 delete 를 놔두고, 그 delete 가 1 보다 커질때까지 end 를 늘린다, 그런 뒤에 end 에서 start 를 빼서 길이를 구하고, 위의 과정을 start 를 하나씩 늘려가면서 반복해나가면 된다.

class Solution {
    fun longestSubarray(nums: IntArray): Int {
        
        var start = 0
        var result = 0
        var delete = 0

        for (end in nums.indices) {
            if (nums[end] == 0) delete += 1

            while(delete > 1) {
                if (nums[start] == 0) delete -= 1
                start += 1
            }

            result = Math.max(result, end - start)
        }

        return result
    }
    
}
profile
길을 찾는 개발자

0개의 댓글