目次
返信内容:
ホームページ バックエンド開発 PHPチュートリアル 対応する値をすばやく取得する方法

対応する値をすばやく取得する方法

Dec 01, 2016 am 01:27 AM
php アルゴリズム

PHP インデックス配列。配列内の値は 1 から 100 までの整数 (非反復) であり、値は断続的になる可能性があります。つまり、7、9 は存在するが、8 は存在しない可能性があります。そして順序が乱れている、つまり1から100まで整っていません

$a=50 と仮定すると、==$a または $a に最も近い 2 つの値を素早く取り出すにはどうすればよいでしょうか?

ちなみに、配列内の値は必ずしも$aと一致するとは限りません

返信内容:

PHP インデックス配列。配列内の値は 1 から 100 までの整数 (非反復) であり、値は断続的になる可能性があります。つまり、7、9 は存在するが、8 は存在しない可能性があります。そして順序が乱れている、つまり1から100まで整っていません

$a=50 と仮定すると、==$a または $a に最も近い 2 つの値を素早く取り出すにはどうすればよいでしょうか?

ちなみに、配列内の値は必ずしも$aと一致するとは限りません

  1. array_search — 配列内の指定された値を検索し、成功した場合は対応するキーを返します

  2. キーの名前を取得します、$arr[$key-1], $arr[$key+1]それだけです

上記は非常に単純ですが、番号が見つからない場合は、元の配列の順序がバラバラなので、必ずしも上位と下位が最も近いものを見つけます。 もちろん、二分探索も同様です。アイデアとして、私自身のアルゴリズムのアイデアを提供します。私のアイデアは、まずバレルソート (私が現在知っている正の整数をソートする最速の方法) を使用することです。 リーリー

これがどれほど効率的かわかりません

リーリー

変更なしの静的クエリ

  • 並べ替え (昇順)、複雑さ nlogn (1 つの並べ替え)

  • 次に、2 点による高速位置決め、複雑さのログ (1 つのクエリ)

  • リーリー
順序を変更せずに追加操作のみを行う動的クエリ

1-100 には 100 個の数字があり、その値も 1-100 です。69 の位置の添字を求める場合、69 を中心として使用し、その近くの点の添字を見つけることができます。特定の位置に数字がある場合、それを1としてマークし、そうでない場合は0としてマークし、69を中心として、左に移動して最長の間隔を見つけ、合計が0になります。右に移動して見つけます。最長の間隔であり、合計は 0 です。ツリー配列を使用すると、間隔の合計、更新クエリの複雑さ、および数値の加算の複雑さを簡単に見つけることができます。

要件と目的:

  • ツリー配列は間隔フラグの合計(特定の間隔の値が表示されるかどうか)を保存し、更新とクエリの複雑さはlognです

  • 特定の値を中心にしてそれに最も近い値を見つけ、その添字、二分探索、複雑度 logn を返します

  • スペースを時間と交換し、値 -> 添字マッピングを保存します。

  • 配列の末尾に数字を追加できますが、順番に追加する必要はありません

次のコードは次の問題を解決します

配列 [5,9,3,8,7,10,12] があるとします

12 に最も近い座標を尋ねると、6 を返します
2 に最も近い座標を尋ねると、2 を返します
非繰り返しを追加します数値 15
反復しない数値 18 を追加します
反復しない数値 16 を追加します
反復しない数値 13 を追加します
13 に最も近い座標を求めると、10 を返します
17 に最も近い座標を求めると、9 を返します

リーリー
追加および削除操作を伴う動的クエリ (大きな数)

添え字が占める追加の間隔値を維持し、バランスのとれたバイナリ ツリーを設定し、複雑さのログをクエリし、複雑さのログを追加および削除する必要があります。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、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)

Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Dec 24, 2024 pm 04:42 PM

PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

CakePHP の日付と時刻 CakePHP の日付と時刻 Sep 10, 2024 pm 05:27 PM

Cakephp4 で日付と時刻を操作するには、利用可能な FrozenTime クラスを利用します。

CakePHP について話し合う CakePHP について話し合う Sep 10, 2024 pm 05:28 PM

CakePHP は、PHP 用のオープンソース フレームワークです。これは、アプリケーションの開発、展開、保守をより簡単にすることを目的としています。 CakePHP は、強力かつ理解しやすい MVC のようなアーキテクチャに基づいています。モデル、ビュー、コントローラー

CakePHP ファイルのアップロード CakePHP ファイルのアップロード Sep 10, 2024 pm 05:27 PM

ファイルのアップロードを行うには、フォーム ヘルパーを使用します。ここではファイルアップロードの例を示します。

CakePHP バリデータの作成 CakePHP バリデータの作成 Sep 10, 2024 pm 05:26 PM

Validator は、コントローラーに次の 2 行を追加することで作成できます。

PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 Dec 20, 2024 am 11:31 AM

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、

CakePHP クイックガイド CakePHP クイックガイド Sep 10, 2024 pm 05:27 PM

CakePHP はオープンソースの MVC フレームワークです。これにより、アプリケーションの開発、展開、保守がはるかに簡単になります。 CakePHP には、最も一般的なタスクの過負荷を軽減するためのライブラリが多数あります。

PHPでHTML/XMLを解析および処理するにはどうすればよいですか? PHPでHTML/XMLを解析および処理するにはどうすればよいですか? Feb 07, 2025 am 11:57 AM

このチュートリアルでは、PHPを使用してXMLドキュメントを効率的に処理する方法を示しています。 XML(拡張可能なマークアップ言語)は、人間の読みやすさとマシン解析の両方に合わせて設計された多用途のテキストベースのマークアップ言語です。一般的にデータストレージに使用されます

See all articles