JavaScript
 Computer >> コンピューター >  >> プログラミング >> JavaScript

JavaScriptで配列内の最初の非連続な数値を見つける方法

本記事では、数値の配列を受け取り、その中で最初に連続性が崩れている(非連続な)数値のインデックスを返す関数をJavaScriptで実装する方法を解説します。

問題の概要

配列内のすべての数値は、公差が1の等差数列(例:3, 4, 5, 6...)として並んでいると仮定します。しかし、その規則に従わない数値が配列の中に存在する場合があり、その違反している数値のインデックスを返す必要があります。

もし配列内のすべての数値が完全に順序通りに並んでいる場合は、-1 を返します。

実装コード

それでは、この関数のコードを見てみましょう。

const arr = [1,2,3,4,5,6,8,9,10];
const secondArr = [3,4,5,6,7,8,9,10,11,12,13,14,15];

const findException = (arr) => {
    for(let i = 0; i < arr.length-1; i++){
        if(arr[i+1] - arr[i] !== 1){
            return i+1;
        };
    };
    return -1;
};

console.log(findException(arr));
console.log(findException(secondArr));

コードの解説

この関数の仕組みは以下の通りです。

1. ループによる走査: 配列の先頭から末尾の手前まで、各要素を順番に確認していきます。

2. 隣接要素の差分チェック: 現在の要素 arr[i] と次の要素 arr[i+1] の差が1でない場合、その次の要素が「非連続な数値」であるため、そのインデックス i+1 を返します。

3. 見つからなかった場合: ループが最後まで完了しても非連続な数値が見つからなければ、配列は完全に連続していることになるので -1 を返します。

出力結果

コンソールには以下のように出力されます。

6
-1

最初の配列 [1,2,3,4,5,6,8,9,10] では、7番目の位置(インデックス6)にある「8」が連続性を破っているため 6 が返されます。一方、2番目の配列は完全に連続しているため -1 が返されます。

まとめ

このアプローチはシンプルな線形探索であり、時間計算量はO(n)です。等差数列の規則性を利用することで、効率的に例外となる数値の位置を特定できます。

  1. 【JavaScript入門】配列内で最初の非連続な数値を見つける方法

    はじめに本記事では、JavaScriptを使って「数値の配列の中から、直前の要素と連続していない最初の数値」を見つける方法を解説します。アルゴリズムの練習やコーディング面接の対策としても役立つ基本的な問題です。 問題の定義数値の配列を受け取るJavaScript関数を作成する必要があります。この関数は、直前の要素に対して +1 となっていない(連続していない)最初の要素を返さなければなりません。 言い換えると、隣り合う要素同士の差が1以外になる箇所が現れたとき、その箇所の後ろ側の要素を返すという処理です。なお、そのような要素が必ず配列内に1つ以上存在するものとします。 サンプルコード以下は、実

  2. JavaScriptで数値の最初のn個の倍数を含む配列を作成する方法

    問題2つの数値、たとえば m と n を引数として受け取るJavaScriptの関数を作成する必要があります。この関数は、m の最初の n 個の倍数(自然数倍)を要素として持つ配列を構築し、返すものとします。例えば、m = 6、n = 14 の場合、期待される出力は以下の通りです。[ 6, 12, 18, 24, 30, 36, 42, 48, 54, 60, 66, 72, 78, 84 ]アプローチこの問題はシンプルです。1 から n までの各整数 i に対して「m × i」を計算し、その結果を順番に空の配列へ格納していきます。最後にその配列を返せば完成です。コード例以下が実際のコードです