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

JavaScript의 일부 숫자와 절대 차이가 있는 가장 긴 하위 배열

<시간/>

첫 번째 인수로 Numbers 배열을 사용하는 JavaScript 함수를 작성해야 합니다. arr이라고 합시다. 함수는 각 쌍의 절대 차이가 num 이하인 가장 긴 하위 배열(연속 또는 비연속)의 길이를 찾아 반환해야 합니다.

예를 들어, 입력 배열과 숫자가 -

인 경우
const arr = [7, 9, 8, 6, 6, 3];
const num = 1;

그러면 출력은 다음과 같아야 합니다. -

const output = 3,

원하는 하위 배열이 [7, 6, 6]

이기 때문입니다.

예시

이에 대한 코드는 -

const arr = [7, 9, 8, 6, 6, 3];
const maximumSubarray = (arr = [], num = 1) => {
   if(!arr.length){
      return 0;
   };
   const maximum = arr.reduce((acc, val) => Math.max(acc, val));
   const buckets = new Array(maximum + 1);
   buckets.fill(0);
   const { length } = arr;
   for(let i=0; i< length; i++){
      buckets[arr[i]] += num;
   };
   let max = 0;
   for(let j=1; j< maximum + 1; j++) {
      let curr = buckets[j];
      let prev = buckets[j - 1];
      if(prev != 0 && prev + curr > max) {
         max = prev + curr;
      };
   };
   return max;
};
console.log(maximumSubarray(arr));

출력

콘솔의 출력은 -

3