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

합이 가장 낮은 배열의 (인접한) 요소 쌍

<시간/>

숫자 배열을 받는 JavaScript 함수를 작성해야 합니다. 함수는 배열의 모든 인접 쌍 중에서 합이 가장 작은 원래 배열에서 인접한 두 요소의 하위 배열을 반환해야 합니다.

배열의 길이가 2보다 작으면 부울 false를 반환해야 합니다.

예를 들어, 입력 배열이 -

인 경우
const arr = [41, 44, -12, 13, -23, 1, 5, -4, 2, 2];

여기서 [-23, 1] 쌍의 합은 배열의 인접한 두 요소에 대해 가장 작은 값인 -22이므로 함수는 [-23, 1]을 반환해야 합니다.

이에 대한 코드는 -

const arr = [41, 44, -12, 13, -23, 1, 5, -4, 2, 2];
const leastSum = arr => {
   if(arr.length <= 2){
      return false;
   };
   const creds = arr.reduce((acc, val, ind) => {
      let { smallest, startIndex } = acc;
      const next = arr[ind+1] ;
      if(!next){
         return acc;
      }
      const sum = val + next;
      if(sum < smallest){
         startIndex = ind;
         smallest = sum;
      };
      return { startIndex, smallest };
   }, {
      smallest: Infinity,
      startIndex: -1
   });
   const { startIndex } = creds;
   return [arr[startIndex], arr[startIndex + 1]];
};
console.log(leastSum(arr));

다음은 콘솔의 출력입니다 -

[-23, 1]