3349. Adjacent Increasing Subarrays Detection I

RexiaN·2025년 10월 14일
0

배열안에서 두 개의 하위배열이 k 이상의 길이를 가지며 순차적으로 증가하고, 인접하는지 판단해야 한다.

index 를 가지고 nums[index + 1] > nums[index] 를 검사해가면서 하위배열의 길이 k를 찾아내면 된다. nums[index + 1] > nums[index] 의 조건이 깨지는 순간 1.이 배열의 인접한 배열의 앞 쪽 배열이 될 수 있는지 2.앞의 숫자보다 더 작아서 탐색조건을 초기화해야 하는지 를 판단해야 한다.

그리고 매번 iteration 이후 또는 원본 배열을 전부 돈 후 조건을 만족하는 하위배열들이 있는지 검사하면 된다.

경계조건, 초기화조건, 인덱스 기반 탐색에서 Edge Case 에 많은 신경을 써야 한다. 푸는데 한시간 넘게 걸릴 거라고는 생각하지 못했다. Easy 라고는 적혀있으나 실질적인 난이도는 Medium 이 되어야하지 않나 싶은 문제였다.

function hasIncreasingSubarrays(nums: number[], k: number): boolean {
    let index = 0
    let seqLength = 1
    let hasFirstSeq = false
    let resetFirstSeqFlag = false

    if (k === 1) {
        return nums.length >= 2
    }

    while (index <= nums.length - 2) {
        if (nums[index + 1] > nums[index]) {
            seqLength += 1
            resetFirstSeqFlag = false

            if (seqLength >= k * 2) {
                return true
            }
        } else {
            if (resetFirstSeqFlag) {
                hasFirstSeq = false
                resetFirstSeqFlag = false
            }

            if (seqLength >= k) {
                hasFirstSeq = true
            } else {
                hasFirstSeq = false
            }

            if (!resetFirstSeqFlag) {
                resetFirstSeqFlag = true
            }

            seqLength = 1
        }

        if (hasFirstSeq && seqLength >= k) {
            return true
        }

        index += 1
    }

    return hasFirstSeq && seqLength >= k
};

profile
Don't forget Rule No.1

0개의 댓글