八の共通のデータ構造、アルゴリズムのインタビュー

8つのデータ構造である:配列、キュー、スタック、図、リンクリスト、木、ハッシュテーブル、トライ

抜粋:https://baijiahao.baidu.com/s?id=1609200503642486098&wfr=spider&for=pc

1.アレイ

  ①配列の2番目の最小の要素を見つけるために

  方法:昇順、その後、第二の要素を取ります

  方法2:二回トラバース第再生する最小要素、この減算の別の要素と第二要素を見つけ、最小の差が0 +ではない第2の小素子の最小要素であります

  ②最初の繰り返しの中に整数の配列を見つけます

  ダブルループ。他の要素との不平等な要素を探して、各要素1を取るために他の要素と比較すると。

  ③2つの注文の配列をマージします

  二つの大きな、新しい新しい新しいアレイに小さいから最初の配列は、これら2つの配列の長さの> =合計の長さを有し、書き込みサイクルの二つの方法は、抽出された大きさの値を比較する二つの配列は、来るあり、小さいです最初の新しい配列を挿入(例えば、[I] <B [j]は、配列を挿入する[i])と、次いでアレイを取る[I + 1]と[J]比較例BアレイのB 、その上の小さな挿入、および。

  ④アレイに正と負の値を再配置(注:構成は、ソートされた複数の各々の内部で正の数に対し、ソートする必要性、正順、複数の昇順されないが)

  1,2 - 入力配列が[1,2、-3,4,5,6-、-7,8,9]である場合、例えば、出力は[9、7,8、3,5、でなければなりません4,6]

  正と負の数を分離することができ、その後、正と負の番号は順次切り替えられます。

2.キュー

  ①キューを使用すると、スタックを表し

  • プッシュ(X) - スタックに要素をx:は、直接ラインに置きます
  • - ポップ()先頭の要素を削除する:別のキューに要素の-1を想定キュー長がNであり、nは、元のキューの場合、その要素を戻します
  • - トップは、()先頭の要素を取得します:ポップと同じように、それは空ではありません
  • 空の() - スタックが空であるかどうかを返します:直接確認してください。

  キューの最初のk個の要素の逆②

  ③キューは1からnまでの二進数を生成します、

3.スタック

  スタック・コンピューティングを使用して、①の後置式

  例えば:* Bは+(CD / E)* F、彼は後置です:AB * CDE / -f * +

  (1)スタックを初期化し、スタックポインタがヌルです。

  (2)、スタックオペランドAに遭遇。

  (3)オペランドB、スタックに遭遇。

  (4)*オペレータの経験は、2つの要素がスタック、スタック演算結果をポップ。

  (5)、スタックオペランドCに遭遇。

  (6)オペレータがスタックDに遭遇します。

  (7)が、スタックオペランド電子に遭遇します。

  (8)オペレータ遭遇/ポップ・スタックを2つの要素のスタックをもたらします。

  (9)オペレータ遭遇 - 、2つの要素は、スタック、スタック演算結果をポップ。

  (10)スタック、オペランドFに遭遇。

  (11)*演算子は、二つの要素がスタック、スタック演算結果をポップ遭遇します。

  (12)は、結果はスタック二つの要素のスタックをポップ、オペレータ+に遭遇します。

  ②は、スタックの要素をソートします

  一時的なスタックの必要性は、目的は、上部要素内部原稿束の全ての要素が常に内部一時スタックより大きい、降順で、その一時的なスタックを確保することです。

  具体的な実施手順:
  (1)数値のデータsを格納するためのデータ・スタックを適用すること、一時的なスタックを適用するが、一時的なデータTMPを格納するために使用される
  (2)比較のスタックは、上部要素および上部TMPトップ要素をポップ:および対応する動作は、次のようにTMPを降順にデータスタックは、特定の比較処理であることを確実にする
  のスタックが空でない場合。

  スタックが空またはTMPトップである場合<= tmp.top()は、上部要素TMPスタックをプッシュする
  スタックSにプッシュする上部よりも小さいTMP要素にtmp.top()スタックが空とTMPのトップでない場合>スタックTMPの先頭要素への最終的な押し込み、中

  (3)このとき、スタックの一番上の要素が最小TMPで、TMPは、スタック要素を順次SにスタックポップSと、スタックをポップし、ベクター配列に順次要素を格納します。 

  ③括弧バランスの表現かどうかを決定します

  アイデアは、左括弧を満たすスタックにそれを置くことで、右ブラケットとの比較の先頭の要素、そうでない場合は同じ括弧の種類やない最上位の要素、不均衡に会いました

4.図。

  ①広さと深さ優先検索を実現

  ツリー図かどうかを確認してください②

  ③図のエッジの数の計算。

  2つの頂点間の最短経路を見つける④

5.リスト

  逆リスト

  https://blog.csdn.net/qq_38664371/article/details/80824283

  ヘッドノードでは、単純サイクル開始ノード、その前のノードを指し示す各​​ノードのポインタである、ヘッドノードが実際にポインタ値ではありません、テール・ノードは、ポインタ値、逆転こうして、ヘッドノードだけではありませんヘッドノードに値がないので、それはテールポインタになり、ノードは次のノードの終わりではありませんので、我々は、新しいノードを必要とするので、次のノードへのポインタが空でなければならないだけでなく、それへのポインタ値です、それは、ヘッドポインタとなって当然のことです。

  循環チェーンを検出

  結果のリストの最後から二番目のノードN

  リスト内の重複する項目を削除

6.ツリー

  ①バイナリツリーの高さを求めて

  ②バイナリ検索ツリーk番目の最大値を探します

  ノードkからルートノードを見つける③

  ④バイナリツリーで指定されたノードにおいて先祖ノードを見つけるために

7.ハッシュテーブル

  ①配列の対称キーと値のペアを探します

  完全なパストラバーサルを追跡②

  ③参照配列が別の配列のサブセットであるかどうか

  所与のアレイ互いに素かどうかを確認④

8.トライ

  ①辞書ツリー内の単語の合計数を計算します

  ②辞書ツリーに保存されているすべての単語を印刷

  アレイトライ一種の元素の③使用

  辞書から辞書ツリー形式の単語を使用④

  ⑤T9辞書(辞書木+ DFS)を構築

おすすめ

転載: www.cnblogs.com/jiangcm/p/11256836.html