[LeetCode] 2760. Longest Even Odd Subarray With Threshold

Chobby·약 10시간 전

LeetCode

목록 보기
792/800

😎풀이

  1. nums 2중 순회
    1-1. l부터 r까지의 범위 검증
    1-2. nums[l]이 짝수인지 검증
    1-3. 범위의 모든 요소가 홀수 혹은 짝수인지 검증
    1-4. 범위의 모든 요소가 임계값을 초과하지 않는지 검증
    1-5. 모든 조건을 만족하는 최대 길이의 연속된 범위 갱신
  2. 탐색된 최대 길이의 연속된 범위 길이 반환
function longestAlternatingSubarray(nums: number[], threshold: number): number {
    let longest = 0
    for(let l = 0; l < nums.length; l++) {
        if(nums[l] % 2 !== 0) continue
        for(let r = l; r < nums.length; r++) {
            const range = nums.slice(l, r + 1)
            let isValid = true
            for(let k = 0; k < range.length - 1; k++) {
                const isFirstFail = range[k] % 2 === range[k + 1] % 2
                const isSecondFail = range[k] > threshold
                if(isFirstFail || isSecondFail) {
                    isValid = false
                    break
                }
            }
            if(range.at(-1) > threshold) {
                isValid = false
            }
            if(!isValid) {
                break
            }
            longest = Math.max(longest, range.length)
        }
    }
    return longest
};
profile
내 지식을 공유할 수 있는 대담함

0개의 댓글