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

합이 0에 가장 가까운 배열의 인접 요소 - JavaScript

<시간/>

숫자 배열을 받아서 합이 0에 가장 가까운 원래 배열에서 두 요소의 하위 배열을 반환하는 JavaScript 함수를 작성해야 합니다.

배열의 길이가 2보다 작으면 전체 배열을 반환해야 합니다.

예:입력 배열이 -

인 경우
const arr = [4, 4, 12, 3, 3, 1, 5, -4, 2, 2];

여기서 [5, -4] 쌍의 합은 배열의 인접한 두 요소에 대해 0에 가장 가까운 1이므로 [5, -4]를 반환해야 합니다.

예시

다음은 코드입니다 -

const arr = [4, 4, 12, 3, 3, 1, 5, -4, 2, 2];
const closestElements = (arr, sum) => {
   if(arr.length <= 2){
      return arr;
   }
   const creds = arr.reduce((acc, val, ind) => {
      let { closest, startIndex } = acc;
      const next = arr[ind+1];
      if(!next){
         return acc;
      }
      const diff = Math.abs(sum - (val + next));
      if(diff < closest){
         startIndex = ind;
         closest = diff;
      };
      return { startIndex, closest };
   }, {
      closest: Infinity,
      startIndex: -1
   });
   const { startIndex: s } = creds;
   return [arr[s], arr[s+1]];
};
console.log(closestElements(arr, 1));

출력

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

[5, -4]