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

JavaScript에서 합이 동일한 하위 배열 쌍

<시간/>

정수 배열을 유일한 인수로 취하는 JavaScript 함수를 작성해야 합니다.

함수는 배열을 두 개의 하위 배열로 분할하여 두 하위 배열에 있는 요소의 합이 같도록 할 수 있는 방법이 있는지 여부를 결정해야 합니다. 요소를 하위 배열로 나누는 동안 원래 배열의 요소가 남아 있지 않은지 확인해야 합니다.

예를 들어 -

입력 배열이 -

인 경우
const arr = [5, 3, 7, 4, 1, 8, 2, 6];

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

const output = true;

원하는 하위 배열이 [5, 3, 4, 6] 및 [7, 1, 8, 2]이고 합이 18이기 때문입니다.

예시

다음은 코드입니다 -

const arr = [5, 3, 7, 4, 1, 8, 2, 6];
const canPartition = (arr = []) => {
   const sum = arr.reduce((acc, val) => acc + val);
   if (sum % 2 !== 0){
      return false;
   };
   const target = sum / 2;
   const array = new Array(target + 1).fill(false);
   array[0] = true;
   for (const num of arr) {
      if (array[target - num]){
         return true
      };
      for (let i = target; i >= num; i--) {
         array[i] = array[i - num];
      }
   }
   return false;
};
console.log(canPartition(arr));

출력

다음은 콘솔 출력입니다 -

true