JavaScriptで指定した合計になる隣接ペアを見つける方法
問題の概要
今回は、配列と数値を受け取り、指定された数値と合計が一致する最初のペアのうち、先頭要素のインデックスを返す関数を作成します。もし配列内にそのようなペアが存在しない場合は、-1 を返す必要があります。
ここでいう「ペア」とは、配列内の任意の2つの要素ではなく、隣り合う2つの連続した要素を指す点に注意してください。
実装例
それでは、実際のコードを見てみましょう。forループで配列を先頭から順に走査し、隣接する2つの要素の合計が目標値と一致するかどうかをチェックしていきます。最初に条件を満たした時点でそのインデックスを返し、最後まで見つからなければ -1 を返します。
const arr = [4, 8, 2, 7, 6, 42, 41, 77, 32, 9];
const findPair = (arr, num) => {
for(let i = 0; i < arr.length; i++){
if(arr[i] + arr[i+1] === num){
return i;
}
};
return -1;
};
console.log(findPair(arr, 13));
console.log(findPair(arr, 48));
console.log(findPair(arr, 45));出力結果
コンソールには以下のように出力されます。
3 4 -1
動作の解説
- findPair(arr, 13) →
3:arr[3] + arr[4]、つまり 7 + 6 = 13 となるため、インデックス 3 を返します。 - findPair(arr, 48) →
4:arr[4] + arr[5]、つまり 6 + 42 = 48 となるため、インデックス 4 を返します。 - findPair(arr, 45) →
-1:合計が 45 になる隣接ペアが配列内に存在しないため、-1 を返します。
このように、単純な線形探索の仕組みを使うことで、隣接要素同士の合計を効率よく確認できます。計算量は O(n) であり、配列の長さに比例して処理時間が増えるシンプルで実用的なアプローチです。
-
JavaScriptで配列の合計値が偶数か奇数かを判定する方法
本記事では、配列内の全要素の合計を求め、その結果が偶数か奇数かに応じて文字列を返すJavaScript関数の実装方法を解説します。 問題 整数の配列 arr を引数として受け取るJavaScript関数を作成する必要があります。この関数は、配列内のすべての要素の合計が奇数であれば文字列「odd」を、偶数であれば文字列「even」を返すようにします。 解決のアプローチ まず、配列メソッドの reduce() を使って配列全体の合計値を算出します。次に、合計値を 2 で割った余り(剰余演算子 % の結果)が 0 かどうかをチェックすることで、偶数・奇数の判定を行います。 コード例 以下が実際のコ
-
JavaScriptでペアの最小値合計を最大化するアルゴリズムを解説
この記事では、整数の配列を受け取り、ペアごとの最小値の合計が最大になるようにグループ分けするJavaScript関数の実装方法を解説します。 問題の概要 長さ2nの整数配列 arr を引数として受け取るJavaScript関数を作成します。この関数の目的は、配列内の整数をn個のペア (a1, b1), (a2, b2), ..., (an, bn) にグループ化し、各ペアの最小値 min(ai, bi) の合計(i = 1 から n まで)ができるだけ大きくなるようにすることです。 例えば、次の入力が与えられたとします。 const arr = [1, 4, 3, 2]; この場合、期待される