문제
첫 번째이자 유일한 인수로 숫자 배열, arr을 취하는 JavaScript 함수를 작성해야 합니다.
우리의 함수는 최대값과 최소값의 차이가 정확히 1인 부분배열의 길이를 찾아서 반환해야 합니다. .
예를 들어, 함수에 대한 입력이 -
인 경우const arr = [2, 4, 3, 3, 6, 3, 4, 8];
그러면 출력은 다음과 같아야 합니다. -
const output = 5;
출력 설명
원하는 하위 배열이 [4, 3, 3, 3, 4]
이기 때문에예시
다음은 코드입니다 -
const arr = [2, 4, 3, 3, 6, 3, 4, 8];
const longestSequence = (arr = []) => {
const map = arr.reduce((acc, num) => {
acc[num] = (acc[num] || 0) + 1
return acc
}, {})
return Object.keys(map).reduce((max, key) => {
const nextKey = parseInt(key, 10) + 1
if (map[nextKey] >= 0) {
return Math.max(
max,
map[key] + map[nextKey],
)
}
return max
}, 0);
};
console.log(longestSequence(arr)); 출력
다음은 콘솔 출력입니다 -
5