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

JavaScriptのサブ配列の最大連続合計


正と負の整数の配列の配列を受け取るJavaScript関数を作成する必要があります。配列には負の要素も含まれているため、連続する要素の合計は負または正になる可能性があります。

この関数は、合計が最大になる配列から連続する要素の配列を選択する必要があります。最後に、関数はその配列を返す必要があります。

例-

入力配列が-

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

その場合、可能な最大合計は7であり、出力サブアレイは-

である必要があります。
const output = [4, -1, -2, 1, 5];

以下はコードです-

const arr = [-2, -3, 4, -1, -2, 1, 5, -3];
const maximumSubarray = (arr = []) => {
   let max = -Infinity;
   let currentSum = 0;
   let maxStartIndex = 0;
   let maxEndIndex = arr.length - 1;
   let currentStartIndex = 0;
   arr.forEach((currentNumber, currentIndex) => {
      currentSum += currentNumber;
      if (max < currentSum) {
         max = currentSum;
         maxStartIndex = currentStartIndex;
         maxEndIndex = currentIndex;
      }
      if (currentSum < 0) {
         currentSum = 0;
         currentStartIndex = currentIndex + 1;
      }
   });
   return arr.slice(maxStartIndex, maxEndIndex + 1);
};
console.log(maximumSubarray(arr));

出力

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

[ 4, -1, -2, 1, 5 ]

  1. JavaScriptを使用した循環配列の最大サブ配列合計

    問題 最初で唯一の引数として、整数の配列arrを受け取るJavaScript関数を作成する必要があります。 この配列arrは循環配列と見なすことができます。つまり、配列の最後の要素の後に最初の要素が続きます。この関数は、空でないarrのサブ配列の可能な最大合計を見つけて返す必要があります。 たとえば、関数への入力が 入力 const arr = [2, -2, 3, -1]; 出力 const output = 4; 出力の説明 目的のサブアレイは[3、-1、2]であるため 例 const arr = [2, -2, 3, -1]; const maxSubarraySum

  2. C++の連続配列

    バイナリ配列があるとすると、0と1の数が等しい連続したサブ配列の最大長を見つける必要があります。したがって、入力が[0,1,0]の場合、出力は[0、 1]または[1,0]は、0と1の数が等しい最大の連続配列です。 これを解決するには、次の手順に従います- ret:=0、n:=numsのサイズ、sum:=0 マップmを作成し、m [0]を設定します:=-1 0からnumsのサイズまでの範囲のiの場合– 1 sum:=nums[i]が1の場合はsum+1、それ以外の場合はsum:=sum – 1 合計がmの場合、ret:=retの最大値とi– m [sum]、それ以外の場合はm [