Computer >> 컴퓨터 >  >> 프로그램 작성 >> JavaScript

JavaScript에서 단위 차이가 있는 가장 긴 하위 배열

<시간/>

문제

첫 번째이자 유일한 인수로 숫자 배열, 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