【JavaScript入門】配列内で最初の非連続な数値を見つける方法
はじめに
本記事では、JavaScriptを使って「数値の配列の中から、直前の要素と連続していない最初の数値」を見つける方法を解説します。アルゴリズムの練習やコーディング面接の対策としても役立つ基本的な問題です。
問題の定義
数値の配列を受け取るJavaScript関数を作成する必要があります。この関数は、直前の要素に対して +1 となっていない(連続していない)最初の要素を返さなければなりません。
言い換えると、隣り合う要素同士の差が1以外になる箇所が現れたとき、その箇所の後ろ側の要素を返すという処理です。なお、そのような要素が必ず配列内に1つ以上存在するものとします。
サンプルコード
以下は、実際の実装例です。
const arr = [1, 2, 3, 4, 6, 7, 8];
const findFirstNonConsecutive = (arr = []) => {
for(let i = 0; i < arr.length - 1; i++){
const el = arr[i];
const next = arr[i + 1];
if(next - el !== 1){
return next;
};
};
return null;
};
console.log(findFirstNonConsecutive(arr));
コードの解説
- 配列を先頭から順番に走査し、現在の要素
elと次の要素nextを比較します。 next - el !== 1が成立した時点で、連続性が途切れているため、そのnextを即座に返します。- ループが最後まで完了しても該当する要素が見つからなかった場合は、
nullを返して安全に終了します。
実行結果
上記のコードを実行すると、コンソールには次のように出力されます。
6
サンプルの配列 [1, 2, 3, 4, 6, 7, 8] では、4 の次に 5 ではなく 6 が来ているため、最初の非連続な数値である 6 が出力されます。
まとめ
このように、シンプルな for ループと隣接要素の差分チェックだけで、配列内の最初の非連続な数値を効率的に検出できます。計算量は O(n) であり、配列全体を最大1回走査するだけで済むため、パフォーマンス面でも優れたアプローチです。
-
JavaScriptでリュカ数列のn番目の要素を求める方法
リュカ数(Lucas Numbers)とはリュカ数は、以下のように定義される数列のことです。フィボナッチ数列と似た構造を持ちますが、初期値が異なる点が特徴です。L(0) = 2L(1) = 1L(n) = L(n-1) + L(n-2)つまり、3番目以降の項は「直前の2つの項の和」として計算されます。実際に並べると 2, 1, 3, 4, 7, 11, 18, 29, ... のような数列になります。問題数値 n を引数として受け取り、n番目のリュカ数を返すJavaScript関数を作成する必要があります。解決策:再帰による実装定義通りに再帰処理を使うことで、シンプルに実装できます。以下がその
-
C#で配列の最初の要素のインデックスを取得する方法
C#で配列の最初の要素のインデックスを取得するには、Array.GetLowerBound(0)メソッドを使用します。このメソッドは、指定した次元における配列の下限(最小インデックス)を返します。 通常のC#配列はインデックス0から始まるため、GetLowerBound(0)は常に「0」を返します。引数の「0」は、対象となる次元(0番目=最初の次元)を指定するものです。 例1:文字列配列の場合 以下のコードでは、文字列配列に対して各種プロパティの状態を確認しつつ、最初の要素のインデックスを取得しています。 using System; public class Demo { public