JavaScriptで2つの配列の逆順和を求める方法
問題の概要
JavaScriptで、同じ長さを持つ2つの数値配列を受け取る関数を作成する必要があります。この関数が返す配列のn番目の要素は、「1つ目の配列の先頭から数えてn番目の要素」と「2つ目の配列の末尾から数えてn番目の要素」の合計になるようにします。
例えば、次のような2つの配列が与えられたとしましょう。
const arr1 = [34, 5, 3, 3, 1, 6];
const arr2 = [5, 67, 8, 2, 6, 4];
この場合、期待される出力は以下のようになります。
const output = [38, 11, 5, 11, 68, 11];
実装コード
以下が実際のコード例です。
const arr1 = [34, 5, 3, 3, 1, 6];
const arr2 = [5, 67, 8, 2, 6, 4];
const reverseSum = (arr1, arr2) => {
const res = [];
for(let i = 0; i < arr1.length; i++){
res[i] = (arr1[i]) + (arr2[arr2.length - i - 1] || 0);
};
return res;
};
console.log(reverseSum(arr1, arr2));
コードの解説
この関数の仕組みは非常にシンプルです。reverseSumは、1つ目の配列(arr1)を先頭から順にループ処理し、同時に2つ目の配列(arr2)の要素を末尾から取得して加算していきます。
ポイントは arr2[arr2.length - i - 1] の部分です。この計算式によって、ループの進行に合わせて2つ目の配列のインデックスを逆順に辿ることができます。また、|| 0 を付けているため、万が一インデックスが範囲外になり値が undefined になった場合でも、エラーではなく 0 として扱われる安全な実装になっています。
実行結果
コンソールには以下の出力が表示されます。
[ 38, 11, 5, 11, 68, 11 ]
各要素が正しく「先頭からの要素+末尾からの要素」の合計になっていることが確認できます。例えば最初の38は、arr1[0] の34と arr2[5] の4の合計です。
-
JavaScriptで2つの配列の対応する値を比較して優勢を判定する方法
はじめにJavaScriptでは、同じ長さの2つの配列を受け取り、対応する位置にある要素同士を比較して「どちらの配列が優勢か」を判定したいケースがあります。本記事では、そのような比較を行う関数をシンプルなコードで実装する方法を解説します。前提となるデータまず、長さが同じ2つの数値配列を用意します。const arr1 = [23, 67, 12, 87, 33, 56, 89, 34, 25];const arr2 = [12, 60, 45, 54, 67, 84, 36, 73, 44];要件上記のような2つの配列を第1引数・第2引数として受け取るJavaScript関数を作成します。関数
-
JavaScriptで2つの二分探索木(BST)のノード値の合計が目標値に一致するか判定する方法
問題 JavaScriptの関数を作成します。この関数は、第1引数として1つ目の二分探索木のルートroot1を、第2引数として2つ目の二分探索木のルートroot2を受け取り、さらに第3引数として整数targetを受け取ります。 この関数は、「1つ目の木の中のあるノード」と「2つ目の木の中のあるノード」の値を足し合わせた結果がtargetと一致するようなペアが存在する場合にのみtrueを返し、存在しない場合はfalseを返す必要があります。 たとえば、次のような入力が与えられたとします。 const target = 23; 2つのBSTの例 この場合の出力は次のようになります。 const