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

JavaScript:隣接する要素の積の最大値を求めるアルゴリズム

整数の配列が与えられたとき、隣接する2つの要素の積が最大となるペアを見つけ、その積を返す必要があります。

例:

入力配列が次の場合:

const arr = [3, 6, -2, -5, 7, 3];

この場合、出力は 21 になります。これは、[7, 3] のペアの積(7 × 3 = 21)が最も大きいためです。

実装例

以下がそのコードです:

const arr = [3, 6, -2, -5, 7, 3];
const adjacentElementsProduct = (arr = []) => {
    let prod, ind;
    for (ind = 1; ind < arr.length; ind++) {
        if (ind === 1 || arr[ind - 1] * arr[ind] > prod) {
            prod = arr[ind - 1] * arr[ind];
        };
    };
    return prod;
};
console.log(adjacentElementsProduct(arr));

出力

コンソールには次のように出力されます:

21

コードの解説

このアルゴリズムの仕組みを簡単に説明します。

  • 配列の2番目の要素(インデックス1)から順に走査を開始します。
  • 各位置で、直前の要素 arr[ind - 1] と現在の要素 arr[ind] の積を計算します。
  • 計算した積がこれまでの最大値 prod より大きければ、prod を更新します。
  • ループが終了した時点で、prod には隣接要素の積の最大値が格納されています。

この方法は配列を一度だけ走査するため、計算量は O(n) と非常に効率的です。また、負の数を含む配列でも正しく動作します。例えば、負の数同士の隣接ペア(-2 と -5)の積は正の 10 になりますが、この例では [7, 3] の 21 が最大となるため、正しく 21 が返されます。

  1. JavaScriptのreduce()メソッドで配列要素の積を求める方法

    問題JavaScriptで、配列 arr を引数として受け取る関数を作成します。この関数は、配列内のすべての要素を掛け合わせた積を計算し、その結果を返す必要があります。解決策:reduce()メソッドを使う配列の全要素を集約して単一の値を得たい場合、Array.prototype.reduce() メソッドが最適です。reduce() は配列の各要素に対してコールバック関数を順に実行し、結果をアキュムレータ(累積値)に蓄えていきます。積を求める場合は、初期値として「1」を指定するのがポイントです。1は乗法における単位元のため、計算結果に影響を与えず、さらに空の配列が渡された場合でも正しく 1

  2. 【C++】行列内の隣接する4つの要素の最大積を求める方法

    このチュートリアルでは、行列内の隣接する4つの要素の積の最大値を求めるC++プログラムについて解説します。 対象となるのは正方行列です。私たちのタスクは、縦・横・斜めのいずれかの方向に隣接する4つの要素を選び、その積が最大になる組み合わせを見つけることです。 アルゴリズムの考え方 基本的なアプローチは以下の通りです。 行列のすべての要素を順番に走査します。 各要素を起点として、「横方向」「縦方向」「右下がりの斜め方向」「左下がりの斜め方向」の4パターンについて、連続する4つの要素の積を計算します。 配列の範囲外を参照しないよう、インデックスの境界条件を確認した上で計算を行います。 計算した積