JavaScriptで配列の隣接要素間の最大絶対差を求める方法
問題の概要
整数の配列が与えられたとき、隣接する2つの要素間の絶対差の中で最大となる値を求める必要があります。
例えば、次のような入力配列があるとします。
const arr = [2, 4, 1, 0];
この場合の出力は以下のようになります。
const output = 3;
これは、配列内で最も絶対差が大きいのが「4」と「1」のペア(|4 − 1| = 3)だからです。他の隣接ペアである |2 − 4| = 2 や |1 − 0| = 1 と比べて、この値が最大となっています。
実装例
この問題は、reduce() メソッドを活用することで簡潔に解くことができます。以下が具体的なコード例です。
const arr = [2, 4, 1, 0];
const maximumDecreasing = (arr = []) => {
const res = arr.slice(1).reduce((acc, val, ind) => {
return Math.max(Math.abs(arr[ind] − val), acc);
}, 0);
return res;
};
console.log(maximumDecreasing(arr));
コードの解説
処理の流れを順番に見ていきましょう。
まず slice(1) を使って配列の先頭要素を除いた部分配列を作成します。これにより、各要素とその直前の要素(arr[ind])をペアとして比較できるようになります。
次に、Math.abs() で隣接する2つの要素の絶対差を計算し、Math.max() を使ってそれまでの最大値(acc)と比較します。より大きな値を常に保持していくことで、最終的に配列全体での最大絶対差が得られます。
また、初期値を 0 に設定しているため、配列が空や要素数が1の場合でもエラーにならず、安全に 0 を返す設計になっています。
実行結果
このコードを実行すると、コンソールには次のように出力されます。
3
-
JavaScriptのconst宣言とは?再代入できない変数の基本と使い方を解説
JavaScriptのconst宣言は、値を再代入することも後から再宣言することもできない変数を作成するための構文です。constはES2015(ES6)で導入されました。 const宣言の主な特徴 一度値を代入すると、別の値に再代入することはできません。 同じ名前の変数を同じスコープ内で再宣言するとエラーになります。 宣言時に必ず初期値を代入する必要があります。 ブロックスコープ({}内でのみ有効)を持ちます。 それでは、JavaScriptにおけるconst宣言の実際のコードを見ていきましょう。 サンプルコード <!DOCTYPE html> <html>
-
JavaScriptのconstとletの違いを徹底解説!ブロックスコープ変数の基本と使い方
JavaScriptにおけるconstとletの基本const と let は、ES2015(ES6)で導入された変数宣言用のキーワードです。どちらもブロックスコープ(波括弧 { } で囲まれた範囲)に対応しているのが特徴で、関数スコープしか持たなかった従来の var とは異なる挙動を示します。両者の大きな違いは再代入の可否です。letで宣言した変数は後から何度でも値を再代入できますが、constで宣言した変数は再代入しようとするとエラー(TypeError)が発生します。letとconstの主な違い項目letconst再代入可能不可(エラー発生)スコープブロックスコープブロックスコープ宣言時