目次
質問を理解する
配列 [1, 2, 4, 5, 6] があるとします。ここで、この配列の数値 2 と 4 の間にスペースがあることがわかります。この不一致は、数値が欠落していることを示します。次に、その位置に適合する最小の数値を見つける必要があります。
この問題を解決する最も簡単な方法の 1 つは、配列をループして各項目が正しい位置にあることを確認することです。要素が正しい位置にない場合は、欠落している要素の最小数を見つけます。
配列全体を走査する必要があるため、このメソッドの時間計算量は O(n) です。
二分探索を行っているため、上記の方法の時間計算量は O(log n) です。
方法 3: 線形探索方法
線形探索法のコードは次のとおりです -
方法 4: 二分検索の改善
この方法の時間計算量も O(log n) であり、これは二分探索法と同じです。
ホームページ ウェブフロントエンド jsチュートリアル 最小の欠損値を見つけるための JavaScript プログラム

最小の欠損値を見つけるための JavaScript プログラム

Sep 01, 2023 pm 03:29 PM

用于查找最小缺失数字的 JavaScript 程序

さまざまな非負の整数のソートされた配列が与えられるので、欠落している最小の数値を見つける必要があります。したがって、このチュートリアルでは、この問題を解決するさまざまな方法を検討し、さまざまな例を使用してその時間計算量について説明します。

質問を理解する

問題の説明は非常に簡単です。さまざまな非負の整数のソートされた配列が与えられた場合、その中で欠損している最小の数値を見つける必要があります。この問題を理解するために例を挙げてみましょう。

###例###

配列 [1, 2, 4, 5, 6] があるとします。ここで、この配列の数値 2 と 4 の間にスペースがあることがわかります。この不一致は、数値が欠落していることを示します。次に、その位置に適合する最小の数値を見つける必要があります。

数値が欠落しているかどうかを判断するには、まず配列に数値 3 が含まれているかどうかを確認する必要があります。数値 3 が配列に存在しない場合、数値 3 が配列に含まれていないため、それは欠落している数値であると言えます。

次に、この問題を解決するいくつかの方法を見てみましょう。

方法 1: 素朴な方法

この問題を解決する最も簡単な方法の 1 つは、配列をループして各項目が正しい位置にあることを確認することです。要素が正しい位置にない場合は、欠落している要素の最小数を見つけます。

###例###

これは上で説明したコードです -

リーリー

配列全体を走査する必要があるため、このメソッドの時間計算量は O(n) です。

ただし、この解決策は、ソートされた配列が提供されるという事実を利用していないため、非効率的です。

方法 2: 二分探索法

ここでは、この問題をより効率的に解決するために二分探索法を使用します。このメソッドでは、配列内に存在しない最初の要素に対して二分検索を実行します。このメソッドのコードは -

です。 ###例### リーリー

二分探索を行っているため、上記の方法の時間計算量は O(log n) です。

この方法は、配列がソートされるという事実を利用するため、単純な方法よりも効率的です。

方法 3: 線形探索方法

これから説明する 3 番目の方法は、線形探索方法です。この方法は、配列がソートされているという事実に依存しており、これにより線形検索を適用して欠落している数値を特定できるようになります。

線形検索方法は、配列を反復処理し、各メンバーをそのインデックスと比較することによって機能します。要素のインデックスがその値と等しくない場合、欠落している要素は配列内のその要素の前の別の場所にあります。欠落している要素のインデックスを返します。

###例###

線形探索法のコードは次のとおりです -

リーリー

配列全体を反復する必要があるため、このメソッドの時間計算量は O(n) です。

この方法は二分探索法よりも効率が劣りますが、小さな配列には便利です。

方法 4: 二分検索の改善

これから説明する 4 番目の方法は、改良された二分探索方法です。このメソッドは、中間要素を欠落している整数と比較する代わりに、そのインデックスと比較することを除いて、バイナリ検索メソッドと非常によく似ています。

修正された二分探索法の背後にある基本的な考え方は、各ステップで配列を半分に分割し、中央の要素をそのインデックスと比較することです。中央の要素がそのインデックスより大きい場合、欠落しているメンバーは配列の左半分にある必要があります。中央の要素がそのインデックス以下の場合、欠落している要素は配列の右半分にある必要があります。

###例###

これは、変更された二分探索メソッドのコード実装です -

リーリー

この方法の時間計算量も O(log n) であり、これは二分探索法と同じです。

この方法は線形検索方法より効率的であり、配列をソートする必要があります。

###結論は###

このブログでは、配列から最小の欠損値を見つける 4 つの方法について説明しました。これらは、単純法、二分探索法、線形探索法、および修正二分探索法です。

以上が最小の欠損値を見つけるための JavaScript プログラムの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

JavaScriptの文字列文字を交換します JavaScriptの文字列文字を交換します Mar 11, 2025 am 12:07 AM

JavaScript文字列置換法とFAQの詳細な説明 この記事では、javaScriptの文字列文字を置き換える2つの方法について説明します:内部JavaScriptコードとWebページの内部HTML。 JavaScriptコード内の文字列を交換します 最も直接的な方法は、置換()メソッドを使用することです。 str = str.replace( "find"、 "置換"); この方法は、最初の一致のみを置き換えます。すべての一致を置き換えるには、正規表現を使用して、グローバルフラグGを追加します。 str = str.replace(/fi

独自のJavaScriptライブラリを作成および公開するにはどうすればよいですか? 独自のJavaScriptライブラリを作成および公開するにはどうすればよいですか? Mar 18, 2025 pm 03:12 PM

記事では、JavaScriptライブラリの作成、公開、および維持について説明し、計画、開発、テスト、ドキュメント、およびプロモーション戦略に焦点を当てています。

ブラウザでのパフォーマンスのためにJavaScriptコードを最適化するにはどうすればよいですか? ブラウザでのパフォーマンスのためにJavaScriptコードを最適化するにはどうすればよいですか? Mar 18, 2025 pm 03:14 PM

この記事では、ブラウザでJavaScriptのパフォーマンスを最適化するための戦略について説明し、実行時間の短縮、ページの負荷速度への影響を最小限に抑えることに焦点を当てています。

ブラウザ開発者ツールを使用してJavaScriptコードを効果的にデバッグするにはどうすればよいですか? ブラウザ開発者ツールを使用してJavaScriptコードを効果的にデバッグするにはどうすればよいですか? Mar 18, 2025 pm 03:16 PM

この記事では、ブラウザ開発者ツールを使用した効果的なJavaScriptデバッグについて説明し、ブレークポイントの設定、コンソールの使用、パフォーマンスの分析に焦点を当てています。

jQueryのパフォーマンスを即座に増やす10の方法 jQueryのパフォーマンスを即座に増やす10の方法 Mar 11, 2025 am 12:15 AM

この記事では、スクリプトのパフォーマンスを大幅に向上させるための10の簡単な手順の概要を説明します。 これらの手法は簡単で、すべてのスキルレベルに適用できます。 更新の維持:NPMのようなパッケージマネージャーを使用して、Viteなどのバンドラーを使用して確認してください

シンプルなjQueryスライダーを構築する方法 シンプルなjQueryスライダーを構築する方法 Mar 11, 2025 am 12:19 AM

この記事では、jQueryライブラリを使用してシンプルな画像カルーセルを作成するように導きます。 jQuery上に構築されたBXSLiderライブラリを使用し、カルーセルをセットアップするために多くの構成オプションを提供します。 今日、絵のカルーセルはウェブサイトで必須の機能になっています - 1つの写真は千の言葉よりも優れています! 画像カルーセルを使用することを決定した後、次の質問はそれを作成する方法です。まず、高品質の高解像度の写真を収集する必要があります。 次に、HTMLとJavaScriptコードを使用して画像カルーセルを作成する必要があります。ウェブ上には、さまざまな方法でカルーセルを作成するのに役立つ多くのライブラリがあります。オープンソースBXSLiderライブラリを使用します。 BXSLiderライブラリはレスポンシブデザインをサポートしているため、このライブラリで構築されたカルーセルは任意のものに適合させることができます

ソースマップを使用して、マイナイドJavaScriptコードをデバッグするにはどうすればよいですか? ソースマップを使用して、マイナイドJavaScriptコードをデバッグするにはどうすればよいですか? Mar 18, 2025 pm 03:17 PM

この記事では、ソースマップを使用して、元のコードにマッピングすることにより、Minified JavaScriptをデバッグする方法について説明します。ソースマップの有効化、ブレークポイントの設定、Chrome DevtoolsやWebpackなどのツールの使用について説明します。

後遺症とMySQLを使用したパスポートを使用します 後遺症とMySQLを使用したパスポートを使用します Mar 11, 2025 am 11:04 AM

Sequelizeは、約束ベースのnode.js ormです。 PostgreSQL、MySQL、MariadB、SQLite、およびMSSQLで使用できます。このチュートリアルでは、Webアプリのユーザー向けに認証を実装します。また、人気のある認証ミドルであるPassportを使用します

See all articles