【ソードフィンガーオファー】トータルコレクション

序文

アルゴリズムとアルゴリズムの質問のタスクの目的は、「追加、削除、変更、調査」の4つのタイプに分けることができます。

データ構造には、配列、文​​字列、ヒープ、スタック、キュー、リンクリスト、ツリー、コレクションなどが含まれます。

したがって、配列、文​​字列、ヒープ、スタック、キュー、リンクリスト、ツリー、コレクションなどのさまざまなデータ構造で、「追加、削除、変更、チェック」などのタスクを実行し、それらを実行します。組み合わせる必要があるだけしばらくすると、多数のアルゴリズムの問​​題(Sword Finger Offer、LeetCode)が形成されました。これらの問題を解決するとき、前任者はまた、さまざまなデータ構造とさまざまなタスクを実行するためのいくつかのメソッドを徐々に要約して形成しました(高速および低速の針リンクリスト/検索、バイナリ検索配列/検索、10ソート配列/変更など) 。

したがって、JianzhiオファーとLeetCodeの問題を解決するとき、それはアルゴリズムとデータ構造の理解のテストであることがよくあります。特定のデータ構造で実行される「追加、削除、変更、およびチェック」操作でさえ、使用できる比較的固定されたアルゴリズムを備えている必要があります。たとえば、順序付けられた配列検索タスクを実行するために、すぐに二分探索について考えますこれらの経験は必ずしも100ショットではありませんが、それでも非常に実用的です。



トピックインデックス

JianzhiとLikouの提供に関する質問は同じではありませんが、両側をブラシで磨くことをお勧めします。

私のインデックス構造は次のとおりです。

データ構造1:
| ____タスク目標-トピック1
| ____タスク目標-トピック2
| ____…
| ____特別なアルゴリズム:
| ____ | ____タスク目標-トピックn
| ____ | ____タスク目標-トピックn + 1
| ____ | ____ …
データ構造2:
| ____タスク目標-トピック1
| ____タスク目標-トピック2
| ____…
| ____特別なアルゴリズム:
| ____ | ____タスク目標-トピックn
| ____ | ____タスク目標-トピックn + 1
| ____ | ____
……


============番号============

チェック-[ソードフィンガーオファー]43。1が1からnまでの整数で出現する回数

チェック-[剣はオファーを指します] 44。数列の特定の桁

チェック-[剣は申し出を指す] 49。醜い番号

チェック-[剣はオファーを指します]60。n個のサイコロの数

チェック-[剣はオファーを指します] 62。円の最後の残りの番号

チェック-[剣は申し出を指す]64。1+2 +…+ nを探す

分割統治:

        増加-[剣はオファーを指します] 16。値の整数乗

ビット演算:

        チェック-[剣はオファーを指します] 15。バイナリの1の数

        増加-[剣はオファーを指します] 65。加算、減算、乗算、除算の必要はありません。

お元気ですか:

        チェック-[剣は申し出を指す] 14.1。ロープを切る

        チェック-[剣は申し出を指す] 14.2ロープを切るII

動的計画法:

        チェック-[剣は申し出を指す] 46。数字を文字列に翻訳する



============配列============

チェック-[剣はオファーを指します] 03。配列内の繰り返し番号

チェック-[剣はオファーを指します]04。2次元配列で検索します

チェック-[剣はオファーを指します] 11。アレイの最小数を回転させます

チェック-[剣はオファーを指します] 29。マトリックスを時計回りに印刷します

チェック-[剣はオファーを指します] 39。配列に半分以上の時間で表示される数字

チェック-[剣はオファーを指します]40。kの最小数

変更- 。[45]アレイを提供し、安全性を証明する最小数を配置

チェック-[剣はオファーを指します] 59。スライディングウィンドウの最大値

チェック-[剣はオファーを指します] 61。トランプでまっすぐ

増加-[剣はオファーを指します] 66。製品配列を構築します

動的計画法:

        チェック-[剣はオファーを指します] 10.1フィボナッチ数列

        チェック-[剣は申し出を指す] 10.2カエルのジャンプの問題

        チェック-[剣はオファーを指します] 10.3長方形のカバレッジ

        チェック-[剣はオファーを指します] 10.4異常なジャンプ

        チェック-[剣はオファーを指します] 42。連続するサブアレイの最大合計

        小切手-[剣は申し出を指す] 47。贈り物の最大の価値

二分法:

        チェック-[剣はオファーを指します] 11。アレイの最小数を回転させます

        チェック-[剣はオファーを指します] 53。ソートされた配列に番号が表示される回数

        チェック-[剣はオファーを指します] 53.2 0〜n​​-1の欠落している番号

バックトラック検索/ DFS / BFS:

        チェック-[剣はオファーを指します] 12。マトリックス内のパス

        チェック-[剣はオファーを指します] 13。ロボットの可動域

ソート:

        変更- 。[21]オファーは、アレイが偶数-奇数の前に順番に配置されるように安全性が調整されていることを証明します

        チェック-[剣はオファーを指します] 51。アレイ内の逆ペア

ビット演算:

        チェック-[剣はオファーを指します] 56。配列内の数字の出現回数

        チェック-[剣はオファーを指します] 56.2配列内の数字の出現回数

ダブルポインタ:

        チェック-[剣はオファーを指します] 57。合計はsの2つの数です

        チェック-[剣はオファーを指します] 57.2とsの付いた2つの数字

お元気ですか:

        チェック-[剣はオファーを指します] 63。株式の最大利益



============文字列============

変更- [05]スペースを交換するための安全提案を証明します。

チェック-[剣はオファーを指します]17。1から最大n桁まで印刷します

チェック-[剣はオファーを指します] 20。数値を表す文字列

変更- 。[37]オファーは安全性のバイナリシリアル化を証明します

チェック-[剣はオファーを指します] 50。一度だけ現れる最初のキャラクター

変更- [58]安全性を証明するために語順を反転します。

変更- [58.2]安全オファーストリングの左回転を証明する

変更- 。[67]オファーは安全文字列を整数に証明します

動的計画法:

        チェック-[剣はオファーを指します] 19。正規表現マッチング

後方検索:

        チェック-[剣は申し出を指す] 38。弦の配置

ダブルポインタ:

        チェック-[剣はオファーを指します] 48。繰り返し文字のない最長の部分文字列



============リンクリスト============

チェック-[剣はオファーを指します] 06。リンクリストを最後から最初まで印刷します

変更- [24]安全性の提供を証明するために、リンクリストを逆にします。

変更- 。[25]は、2つのソートされたリストをマージするオファーを獲得します

変更-[剣はオファーを指します] 35。複雑なリンクリストのコピー

チェック-[剣はオファーを指します]52。2つのリンクリストの最初の共通ノード

ダブルポインタ:

        削除-[剣はオファーを指します] 18。リンクリストのノードを削除します

        削除-[剣はオファーを指します] 18.2リンクリスト内の重複ノードを削除します

        チェック-[剣はオファーを指します] 22。リンクリストの下からk番目のノード



============ツリー============

増加-[剣はオファーを指します] 07。二分木を再構築します

チェック-[剣はオファーを指します] 08。二分木の次のノード

チェック-[剣はオファーを指します] 26。ツリーの下部構造

変更- 。[27]バイナリ証明安全ミラーを提供

チェック-[剣はオファーを指します] 28。対称二分木

チェック-[剣はオファーを指します] 32.1二分木を上から下に印刷します

チェック-[剣はオファーを指します] 32.2二分木を上から下に印刷します2

チェック-[剣はオファーを指します] 32.3二分木を上から下に印刷します3 /二分木をジグザグに印刷します

チェック-[剣は申し出を指す] 34。中和が二分木の特定の値であるパス

変更- 。[37]オファーは安全性のバイナリシリアル化を証明します

チェック-[剣はオファーを指します] 55。二分木の深さ

チェック-[剣はオファーを指します] 68.2バイナリツリーの最も近い共通の祖先

二分探索木(BST):

        チェック-[剣はオファーを指します] 33。二分探索木の注文後のトラバーサルシーケンス

        変更- 。[36]安全性を証明するために、バイナリ検索ツリーと二重リンクリストを提供します

        チェック-[剣はオファーを指します] 54。二分探索木のk番目に大きいノード

        チェック-[剣はオファーを指します] 68。バイナリ検索ツリーの最も近い共通の祖先

二分平衡木(AVL):

        チェック-[剣はオファーを指します] 55.2平衡二分木



============キュースタック============

増加-[剣はオファーを指します]09。2つのスタックを使用してキューを実装します

増加-[剣はオファーを指します] 30。最小関数を含むスタック

チェック-[剣はオファーを指します] 31。スタックプッシュとポップシーケンス

チェック-[剣はオファーを指します] 41。データストリームの中央値

増加-[剣はオファーを指します] 59.2キューの最大値

おすすめ

転載: blog.csdn.net/fisherish/article/details/114746817