Javascriptのキーでオブジェクトから値を取得するときの時間計算量はO(1)ですか?

user1884378

私が知っているように、Javascriptのオブジェクトはハッシュ(連想配列)のように機能します。したがって、このようなオブジェクトのキーで値を取得する場合、のキーの数にobj['a']関係なく、時間計算量は常にO(1)になると思いますobjしかし、インタビュアーがこれについて私に挑戦しました。

彼は私に質問をしました:find the intersection between two unsorted arrays (no duplicate)

私の解決策は、最初の配列を調べてすべての要素のハッシュを作成し、2番目の配列の要素がハッシュにある場合は2番目の配列をループして、それを出力にプッシュすることです。

コードはこれが好きです:

function findIntersection(ary1, ary2) {
  var hash = {};
  var output = [];

  ary1.forEach((v) => {
    hash[v] = true;
  });

  ary2.forEach((v) => {
    if (hash[v]) {
      output.push(v);
    }
  });

  return output;
}

複雑さはO(m+n)、mとnは入力配列の長さであると説明しましたしかし、インタビュアーはこれに同意していないようでした。彼はhash[v]、値がO(1)であることを確認してください、Javascriptがどのように達成するかを教えてくださいと尋ね続けましたhash[v]

hash[v]O(1)ではないの時間計算量ですか?そうでない場合は、正しいハッシュ構造を使用して線形時間計算量を実現するためにコードを書き直す方法は?

これは、私のJavascript学習のまさに基礎に当たりました。

libik

これはJavascriptに関するものではなく、一般的な「ハッシュマップ」に関するものです。

それらはいわゆる疑似定数と呼ばれます。これは、数値が少ない場合、ほとんどの場合、一定の時間で値を返すことを意味しますが、それは保証されていません。

2つの文字列が同じハッシュを持っている場合はどうなりますか?それからそれらは一箇所に保存され、あなたはあなたの価値を見つけるためにそれらを通して直線的に行かなければなりません。したがって、運が悪ければ、同じハッシュを持つハッシュマップを持つすべてのキーを持つことができます=結果はO(n)です。

また、数を増やすと衝突の確率が高くなるため、多くの数の場合、O(n)になります。


解決策について-私はあなたが持っているものが妥当な量の値に最適だと思います(数百万、おそらく数十億以下ですが、いくつかの超高数値ではありません)。アルゴリズムが正しく機能しているこれらの境界について言及するのは良いことです。

重複を見つけるために、線形時間で実行されるアルゴリズムはないと思います。あなたはそれをn log n分類して通過することによってそれを行うことができます

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

Javascriptのオブジェクト拡散演算子の時間計算量はどれくらいですか?

javascriptの単一オブジェクトキー値からオブジェクトを取得できますか?

javascriptのオブジェクトから隣接するキーとそのキーの値を取得するにはどうすればよいですか?

Railsでオブジェクトを作成するときにPostgresの計算関数から値を取得する方法

「in」プロパティを使用してオブジェクトにキーが存在するかどうかを確認するための時間計算量

javascriptでオブジェクトのキーと値を取得する方法は?

計算されたオブジェクト内のオブジェクトプロパティを取得すると、オブジェクト自体ではなく未定義になるのはなぜですか?このコンテキストでは、どちらのアプローチが適していますか?

Pythonのキーとしてタプル値を使用するすべての操作での辞書の時間計算量はどれくらいですか?

配列内およびオブジェクトごとにオブジェクトを乗算し、1つまたは複数のキーを取得して、それらの値を減らすにはどうすればよいですか?

Javascriptのオブジェクトのリストからキーの値を取得するにはどうすればよいですか?

javascriptを使用してオブジェクトの配列からキーの一意の値を取得するにはどうすればよいですか?

Axios応答オブジェクトからキーと値を抽出する最良の方法は何ですか?

paramオブジェクトのマップからキー値を変換することは可能ですか?

javascriptのオブジェクトから時間を削除するにはどうすればよいですか?

javascriptでキーと値のオブジェクトのペアから変数を作成する方法

Javaのオブジェクトからキーと値を取得する方法

JavaScriptオブジェクトのキーをその値で取得する方法は?

javascriptオブジェクトの各オブジェクトのキー値を取得するにはどうすればよいですか?

この関数の時間計算量はO(1)ですか?

ヒープソートを使用して0と1の配列をソートする時間計算量はどれくらいですか?

javascriptのキーと値のペアオブジェクトで定数値を使用できますか?

マルチレベルのJSONオブジェクトをループして、そのキーと値の1つから新しいJavascriptオブジェクトを作成するにはどうすればよいですか?

最大値のキーを取得します。このコードの時間計算量はどれくらいですか?

Ionicで2つの日付オブジェクト間の経過時間を計算するにはどうすればよいですか?

キーが0_1のときにJavaScriptオブジェクトからプロパティ値を取得する方法

JavaScriptの配列から特定のキーと値を持つオブジェクトを作成するにはどうすればよいですか?

JavaScriptで日付オブジェクトを別の日付オブジェクトから減算できるのはなぜですか?

オブジェクトの配列からキーに基づいて各値を取得できますか?

JavaScriptでオブジェクトの配列から値を取得する方法

TOP 一覧

  1. 1

    PictureBoxで画像のブレンドを無効にする

  2. 2

    HTTPヘッダー 'SOAPAction'の値はサーバーによって認識されませんでした

  3. 3

    STSでループプロセス「クラスパス通知の送信」のループを停止する方法

  4. 4

    レスポンシブウェブサイトの一番下にスティッキーなナビゲーションバーを作成するのに問題がある

  5. 5

    セレンのモデルダイアログからテキストを抽出するにはどうすればよいですか?

  6. 6

    Ansibleで複数行のシェルスクリプトを実行する方法

  7. 7

    Python / SciPyのピーク検出アルゴリズム

  8. 8

    tkinterウィンドウを閉じてもPythonプログラムが終了しない

  9. 9

    ZScalerと証明書の問題により、Dockerを使用できません

  10. 10

    Rパッケージ「AppliedPredictiveModeling」のインストール中にエラーが発生しました

  11. 11

    テキストフィールドの値に基づいて UIslider を移動します

  12. 12

    Crashlytics:コンパイラー生成とはどういう意味ですか?

  13. 13

    「埋め込みブラウザのOAuthログイン」を有効にしてコールバックURLを指定した後でも、Facebookのコールバックエラーが発生する

  14. 14

    tf.nn_conv2dとtf.nn.depthwise_conv2dの違い

  15. 15

    CSSはアニメーションで変換および回転します

  16. 16

    BLOBストレージからデータを読み取り、Azure関数アプリを使用してデータにアクセスする方法

  17. 17

    Chromeウェブアプリのウェブビューの高さの問題

  18. 18

    Postmanを使用してファイル付きの(ネストされた)jsonオブジェクトを送信する

  19. 19

    amCharts 4で積み上げ棒グラフの輪郭を描く方法は?

  20. 20

    Officeアドインを使用してOutlookの連絡先のリストにプログラムでアクセスすることは可能ですか?

  21. 21

    Reactでclsxを使用する方法

ホットタグ

アーカイブ