JavaScriptで配列内の連続する数値ペアの個数を数える方法
問題
整数の配列を受け取るJavaScript関数を作成します。この関数は、配列の中から「隣接する2つの要素の値が連続している(差が±1)」ペアの個数を数えて返す必要があります。
アプローチ
最もシンプルな方法は、配列を先頭から順に走査しながら、インデックス i と i+1 の要素を1組として比較していくことです。ループ変数を2ずつ増やすことで、同じ要素を重複してチェックすることなく各ペアを検証できます。2つの要素の差が1であれば、そのペアは「連続した数値」とみなし、カウンターを1つ増やします。
コード例
以下が実際のコードです。
const arr = [1, 2, 5, 8, -4, -3, 7, 6, 5];
const countPairs = (arr = []) => {
let count = 0;
for (let i = 0; i < arr.length; i += 2) {
if (arr[i] - 1 === arr[i + 1] || arr[i] + 1 === arr[i + 1]) {
count++;
}
}
return count;
};
console.log(countPairs(arr));出力
3
コードの解説
このコードでは、次のような処理が行われています。
- 初期化: カウンター変数
countを0で初期化します。 - ペアごとの走査: ループ変数
iを2ずつ増やし、arr[i]とarr[i+1]を1組のペアとして扱います。 - 条件判定: 「前の要素 + 1」または「前の要素 − 1」が次の要素と一致する場合、そのペアは連続した数値とみなされます。
- カウント: 条件を満たすたびに
countをインクリメントし、ループ完了後に結果として返します。
サンプル配列の場合、(1, 2)、(-4, -3)、(7, 6) の3組が連続した数値のペアに該当するため、出力は 3 になります。
-
JavaScriptで配列内の最長の「山」部分配列の長さを求める方法
山(マウンテン)部分配列とは配列 arr の(連続した)部分配列 sub が「山」と呼ばれるのは、以下の性質を満たす場合です。sub.length >= 3 であることある 0 < i < sub.length - 1 が存在し、sub[0] < sub[1] < ... < sub[i] > sub[i+1] > ... > sub[sub.length - 1] となること。つまり、一度増加していき頂点に達した後、減少に転じる形状を持つこと問題数値の配列 arr を第一引数(唯一の引数)として受け取るJavaScript関数を作成する必
-
JavaScriptで挿入ソートを実装して数値配列を昇順に並べ替える方法
挿入ソートとは挿入ソート(Insertion Sort)は、シンプルで直感的なソートアルゴリズムの一つです。配列を「整列済みの部分」と「未整列の部分」に分け、未整列部分の要素を一つずつ取り出して、整列済み部分の適切な位置に挿入していくことで全体を並べ替えます。データ量が少ない場合や、すでにほぼ整列されたデータに対しては非常に効率的に動作するため、実務でも場面を選んで活用されています。問題の概要今回は、JavaScript関数を作成します。この関数は、第一引数(唯一の引数)として数値の配列 arr を受け取ります。関数の役割は、挿入ソートのアルゴリズムを使用して、この数値配列を昇順(小さい順)に