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

JavaScript에서 두 배열 균형 조정

<시간/>

문제

첫 번째와 두 번째 인수로 두 개의 숫자 배열 arr1과 arr2를 사용하는 JavaScript 함수를 작성해야 합니다.

arr1과 arr2에 있는 요소의 합이 다릅니다. 우리의 함수는 첫 번째 배열에서 하나의 요소를 선택하고 두 번째 배열에 밀어넣고 두 번째 배열에서 하나의 요소를 선택하고 두 배열의 요소 합이 같아지도록 첫 번째 배열에 밀어넣어야 합니다. 이 두 요소의 배열을 반환해야 합니다.

예를 들어 함수에 대한 입력이

인 경우

입력

const arr1 = [1, 2, 5];
const arr2 = [2, 4];

출력

const output = [5, 4];

출력 설명

arr1에서 5를 제거하고 arr2로 푸시하고 arr2에서 4를 제거하고 arr1로 푸시하면 두 배열의 합이 같을 것이기 때문입니다(7).

다음은 코드입니다:

예시

const arr1 = [1, 2, 5];
const arr2 = [2, 4];
const balanceArrays = (arr1 = [], arr2 = []) => {
   const sumA = arr1.reduce((acc, v) => acc + v, 0)
   const sumB = arr2.reduce((acc, v) => acc + v, 0)
   const difference = (sumA + sumB) / 2 - sumA
   const map = arr2.reduce((acc, v) => {
      acc[v] = true
      return acc
   }, {})
   for(let i = 0; i < arr1.length; i++) {
      if(map[arr1[i] + difference] === true) {
         return [arr1[i], arr1[i] + difference]
      }
   }
   return []
};
console.log(balanceArrays(arr1, arr2));

출력

[5, 4]