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

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


問題

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

この配列arrは循環配列と見なすことができます。つまり、配列の最後の要素の後に最初の要素が続きます。この関数は、空でないarrのサブ配列の可能な最大合計を見つけて返す必要があります。

たとえば、関数への入力が

入力

const arr = [2, -2, 3, -1];

出力

const output = 4;

出力の説明

目的のサブアレイは[3、-1、2]

であるため

const arr = [2, -2, 3, -1];
const maxSubarraySumCircular = (arr = []) => {
   let max = arr[0]
   let min = arr[0]
   let currentMax = max
   let currentMin = min
   let sum = arr[0]
   for (let i = 1; i < arr.length; i++) {
      currentMax = arr[i] + Math.max(currentMax, 0)
      max = Math.max(max, currentMax)
      currentMin = arr[i] + Math.min(currentMin, 0)
      min = Math.min(min, currentMin)
      sum += arr[i]
   }
   return max < 0 ? max : Math.max(max, sum - min)
}
console.log(maxSubarraySumCircular(arr));

出力

4

  1. JavaScriptを使用した配列内のネストされたオブジェクト値の合計

    以下は、JavaScriptを使用して配列内のネストされたオブジェクト値を合計するコードです- 例 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Document</title> <st

  2. JavaScriptオブジェクトの配列で配列のメソッドを使用していますか?

    以下は、JavaScriptオブジェクトの配列で配列のメソッドを使用するためのコードです- 例 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Document</title> <styl