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

JavaScript에서 동일한 평균을 가진 두 개의 배열로 숫자 배열 분할

<시간/>

정수 배열을 첫 번째이자 유일한 인수로 사용하는 JavaScript 함수를 작성해야 합니다.

함수는 입력 배열의 요소 조합이 존재하는지 여부를 결정해야 합니다. 두 그룹으로 나눌 때(동일한 요소가 있을 수 있음/없을 수 있음), 두 그룹의 평균은 동일합니다. 그러한 조건이 존재하면 함수는 true를 반환하고 그렇지 않으면 false를 반환해야 합니다.

예를 들어 -

입력 배열이 -

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

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

const output = true;

두 그룹의 평균이 4.5이므로 조합이 [8, 1, 5, 4] 및 [6, 3, 2, 7]이기 때문입니다.

예시

다음은 코드입니다 -

const arr = [6, 3, 2, 8, 1, 5, 7, 4];
const canHaveEqualAveragePartition = (arr = []) => {
   const sum = arr.reduce((acc, val) => acc + val);
   const array = Array(sum+1).fill(false).map(() =>
   Array(arr.length+1).fill(false));
   array[0][0] = true;
   for(let i=0; i < arr.length; ++i){
      for(let j=sum - arr[i];j>=0;--j){
         for(let k=arr.length-2;k>=0;--k){
            if(array[j][k]){
               array[j + arr[i]][k+1] = true;
               if((j + arr[i]) * (arr.length - k - 1) == (sum - j -arr[i]) * (k + 1)){
                  return true;
               }
            }
         }
      }
   }
   return false;
};
console.log(canHaveEqualAveragePartition(arr));

출력

다음은 콘솔 출력입니다 -

true