Javascript
 Computer >> コンピューター >  >> プログラミング >> Javascript

JavaScriptで合計が等しいn個のサブ配列を見つける


最初の引数として整数の配列を取り、2番目の引数として整数を受け取るJavaScript関数を作成する必要があります。

関数は、すべてのサブ配列の合計が等しくなるように、元の配列からn個(2番目の引数)のサブ配列を作成できるかどうかを確認する必要があります。

例-

入力が-

の場合
const arr = [4, 3, 2, 3, 5, 2, 1];
const num = 4;

サブ配列は[5]、[1、4]、[2、3]、[2、3]であり、合計が5に等しいため、出力はtrueになります。

以下はコードです-

const arr = [4, 3, 2, 3, 5, 2, 1];
const num = 4;
const canFormSubarray = (arr = [], num) => {
   const total = arr.reduce((sum, num) => sum + num, 0);

   if (total % num !== 0) {
      return false;
   }
   const target = total / num;
   const visited = new Array(arr.length).fill(false);
   const canPartition = (start, numberOfSubsets, currentSum) => {
      if (numberOfSubsets === 1) {
         return true;
      }
      if (currentSum === target) {
         return canPartition(0, numberOfSubsets - 1, 0);
      };
      for (let i = start; i < arr.length; i++) {
         if (!visited[i]) {
            visited[i] = true;
            if (canPartition(i + 1, numberOfSubsets, currentSum + arr[i])) {
               return true;
            }
            visited[i] = false;
         };
      };
      return false;
   };
   return canPartition(0, num, 0);
};
console.log(canFormSubarray(arr, num));

出力

以下はコンソール出力です-

true

  1. JavaScriptで必要な合計を持つバイナリサブ配列

    問題 最初の引数としてバイナリ配列arrを取り、2番目の引数として数値targetを受け取るJavaScript関数を作成する必要があります。 私たちの関数は、配列arrに存在するサブ配列の数をカウントすることになっています。その要素の合計はcountに等しくなります。最終的にこのカウントを返す必要があります。 たとえば、関数への入力が 入力 const arr = [1, 0, 1, 0, 1]; const target = 2; 出力 const output = 4; 出力の説明 必要なサブアレイは次のとおりです。 [1,0,1][1,0,1,0] [0,1,0,1

  2. Pythonで合計が等しいk個のサブ配列に分割できるかどうかを確認します

    numsという数値の配列があり、別の値Kもあるとします。各サブ配列の要素の合計が等しくなるように、配列numsをK個の連続するサブ配列に分割できるかどうかを確認する必要があります。 したがって、入力がnums =[2、5、3、4、7] k =3のような場合、[(2、5)、(3、4)、 (7)]すべてが等しい合計7を持ちます。 これを解決するには、次の手順に従います- n:=numsのサイズ cumul_sum:=nums単位のすべての要素の累積合計 total_sum:=cumul_sum [n-1] total_sumがkで割り切れない場合、 Falseを返す coun