
😎풀이
- 교차배열 검증 헬퍼함수 정의
nums 배열 슬라이딩 윈도우 사용
2-1. 현재 윈도우가 교차 배열인지 검증
2-2. 교차 배열이라면, 최대 길이 갱신
- 단일 배열이거나, 교차할 요소가 없다면
-1 반환
- 탐색된 교차배열 중 가장 긴 배열의 길이 반환
function alternatingSubarray(nums: number[]): number {
let longest = 0
for(let left = 0; left < nums.length; left++) {
for(let right = left; right < nums.length; right++) {
const window = nums.slice(left, right + 1)
if(!isAlternate(window)) break
longest = Math.max(longest, window.length)
}
}
if(longest < 2) return -1
return longest
};
function isAlternate(nums: number[]) {
if(nums.length < 2) return true
const first = nums[0]
const second = nums[1]
if((second - first) !== 1) return false
for(let i = 0; i < nums.length; i += 2) {
if(nums[i] !== first) return false
}
for(let i = 1; i < nums.length; i += 2) {
if(nums[i] !== second) return false
}
return true
}