リントコード
現在 (2016 年 8 月 22 日) までに、LintCode Online Judge には289の問題があります。最近トラブルが増えています。全289問題を分類すると次のとおりです。その他の問題と解決策については、私の LeetCode-Solutions リポジトリをご覧ください。完全な概要とより良い解決策については、引き続き更新していきます。続報をお待ちください。
アルゴリズム
- ビット操作
- 配列
- 弦
- リンクされたリスト
- 数学
- 木
- スタック
- 列
- ヒープ
- ハッシュテーブル
- データ構造
- 選別
- 再帰
- 二分探索
- 幅優先検索
- 深さ優先検索
- 後戻り
- 二分探索木
- 動的プログラミング
- よく深い
- OOデザイン
- システム設計
ビット操作
| # | タイトル | 解決 | 時間 | 空間 | 困難 | タグ | 注記 |
|---|
| 1 | A + B 問題 | C++ | ○(1) | ○(1) | 中くらい | | |
| 82 | 単一の数字 | C++ | の上) | ○(1) | 簡単 | リートコード | |
| 83 | シングルナンバーⅡ | C++ | の上) | ○(1) | 簡単 | リートコード | |
| 84 | シングルナンバーIII | C++ | の上) | ○(1) | 中くらい | CTCI | |
| 142 | O(1) 2 の累乗を確認する | C++ | ○(1) | ○(1) | 簡単 | | |
| 179 | アップデートビット | C++ | ○(1) | ○(1) | 中くらい | CTCI | |
| 181 | フリップビット | C++ | ○(1) | ○(1) | 簡単 | CTCI | |
| 196 | 足りない番号を探す | C++ | の上) | ○(1) | 中くらい | | |
| 365 | バイナリで 1 を数える | C++ | ○(1) | ○(1) | 簡単 | CTCI | |
配列
| # | タイトル | 解決 | 時間 | 空間 | 困難 | タグ | 注記 |
|---|
| 6 | ソートされた配列を結合する | C++ | O(m + n) | ○(1) | 簡単 | リートコード | 2つのポインター |
| 8 | 文字列を回転する | C++ | の上) | ○(1) | 簡単 | リートコード | |
| 9 | フィズバズ | C++ | の上) | ○(1) | 簡単 | | |
| 30 | 挿入間隔 | C++ | の上) | ○(1) | 簡単 | リートコード、EPI | |
| 31 | パーティションアレイ | C++ | の上) | ○(1) | 中くらい | | 2つのポインター |
| 32 | 最小ウィンドウ部分文字列 | C++ | の上) | ○(1) | 中くらい | リートコード | |
| 38 | 2D マトリックスの検索 II | C++ | O(m + n) | ○(1) | 中くらい | EPI | |
| 39 | 回転ソートされた配列を回復する | C++ | の上) | ○(1) | 簡単 | | |
| 46 | 多数決番号 | C++ | の上) | ○(1) | 簡単 | リートコード | |
| 47 | 多数決 II | C++ | の上) | ○(1) | 中くらい | EPI | |
| 48 | 多数決Ⅲ | C++ | の上) | わかりました) | 中くらい | EPI | |
| 49 | 文字を大文字と小文字で並べ替える | C++ | の上) | ○(1) | 中くらい | | 2つのポインター |
| 50 | 配列の積自体を除外する | C++ | の上) | ○(1) | 簡単 | | |
| 51 | 前の順列 | C++ | の上) | ○(1) | 中くらい | | |
| 52 | 次の順列 | C++ | の上) | ○(1) | 中くらい | リートコード | |
| 57 | 3 合計 | C++ | O(n^2) | ○(1) | 中くらい | リートコード | 2 つのポインター、並べ替え |
| 58 | 4 合計 | C++ | O(n^3) | ○(1) | 中くらい | リートコード | ハッシュ |
| 59 | 3 最も近い合計 | C++ | O(n^2) | ○(1) | 中くらい | リートコード | 2 つのポインター、並べ替え |
| 64 | ソートされた配列 II をマージ | C++ | O(m + n) | ○(1) | 簡単 | リートコード | 2つのポインター |
| 100 | ソートされた配列から重複を削除 | C++ | の上) | ○(1) | 簡単 | リートコード | 2つのポインター |
| 101 | ソートされた配列 II から重複を削除 | C++ | の上) | ○(1) | 簡単 | リートコード | 2つのポインター |
| 133 | 最長の単語 | C++ | の上) | の上) | 簡単 | | |
| 144 | 正の数値と負の数値をインターリーブする | C++ | の上) | ○(1) | 中くらい | | 2つのポインター |
| 161 | 画像を回転する | C++ | O(n^2) | ○(1) | 中くらい | リートコード | |
| 162 | 行列のゼロを設定する | C++ | O(m * n) | ○(1) | 中くらい | リートコード | |
| 172 | 要素の削除 | C++ | の上) | ○(1) | 簡単 | リートコード | 2つのポインター |
| 185 | マトリックス ジグザグ トラバーサル | C++ | O(m * n) | ○(1) | 簡単 | | |
| 189 | 最初の欠落陽性 | C++ | の上) | ○(1) | 簡単 | リートコード、EPI | ハッシュ |
| 190 | 次の順列 II | C++ | の上) | ○(1) | 中くらい | リートコード | |
| 200 | 最長の回文部分文字列 | C++ | の上) | の上) | 中くらい | リートコード | Manacher's Algorithm |
| 363 | 雨水を溜める | C++ | の上) | ○(1) | 中くらい | リートコード | 2 つのポインタ、トリッキー |
| 373 | 配列を奇数と偶数で分割する | C++ | の上) | ○(1) | 簡単 | | 2 つのポインター |
| 374 | スパイラルマトリックス | C++ | O(m * n) | ○(1) | 中くらい | リートコード | |
| 381 | スパイラル マトリックス II | C++ | O(n^2) | ○(1) | 中くらい | リートコード | |
| 382 | 三角形の数 | C++ | O(n^2) | ○(1) | 中くらい | | 2つのポインター |
| 383 | ほとんどの水が入った容器 | C++ | の上) | ○(1) | 中くらい | リートコード、EPI | 2つのポインター |
| 388 | 順列シーケンス | C++ | O(n^2) | の上) | 中くらい | リートコード | |
| 389 | 有効な数独 | C++ | O(9^2) | お(9) | 簡単 | リートコード | |
| 404 | サブアレイサム II | C++ | O(nlogn) | の上) | 難しい | | 2 つのポインタ、二分探索 |
| 405 | 部分行列の合計 | C++ | O(m * n^2) | オ(メートル) | 難しい | | ハッシュ |
| 406 | 最小サイズのサブ配列の合計 | C++ | の上) | ○(1) | 中くらい | リートコード | 2 つのポインタ、二分探索 |
| 539 | ゼロを移動する | C++ | の上) | ○(1) | 簡単 | リートコード | 2 つのポインター |
弦
| # | タイトル | 解決 | 時間 | 空間 | 困難 | タグ | 注記 |
|---|
| 13 | strStr | C++ | O(n + k) | わかりました) | 簡単 | リートコード | KMP Algorithm |
| 53 | 文字列内の単語を反転する | C++ | の上) | ○(1) | 簡単 | リートコード、EPI | |
| 54 | 文字列から整数へ(atoi) | C++ | の上) | ○(1) | 難しい | リートコード | |
| 55 | 文字列の比較 | C++ | の上) | O(c) | 簡単 | | |
| 78 | 最長の共通プレフィックス | C++ | の上) | ○(1) | 中くらい | | |
| 157 | ユニークなキャラクター | C++ | の上) | ○(1) | 簡単 | CTCI | |
| 158 | 2 つの文字列はアナグラムです | C++ | の上) | ○(1) | 簡単 | | |
| 171 | アナグラム | C++ | O(n * klogk) | オ(メートル) | 簡単 | リートコード、EPI | |
| 212 | スペースの置き換え | C++ | の上) | ○(1) | 簡単 | | |
| 407 | プラスワン | C++ | の上) | ○(1) | 簡単 | リートコード | |
| 408 | バイナリの追加 | C++ | の上) | ○(1) | 簡単 | リートコード | |
| 415 | 有効な回文 | C++ | の上) | ○(1) | 簡単 | リートコード | |
| 417 | 有効な番号 | C++ | の上) | ○(1) | 難しい | リートコード | オートマトン |
| 420 | 数えて言う | C++ | O(n * 2^n) | O(2^n) | 簡単 | リートコード | |
| 422 | 最後の単語の長さ | C++ | の上) | ○(1) | 簡単 | リートコード | |
| 524 | 左パッド | C++ | O(p + n) | ○(1) | 簡単 | リートコード | |
リンクされたリスト
| # | タイトル | 解決 | 時間 | 空間 | 困難 | タグ | 注記 |
|---|
| 16 | 2 つのソートされたリストを結合する | C++ | の上) | ○(1) | 簡単 | リートコード、EPI | |
| 35 | 逆方向リンクリスト | C++ | の上) | ○(1) | 簡単 | リートコード、EPI | |
| 36 | 逆リンクリスト II | C++ | の上) | ○(1) | 中くらい | リートコード、EPI | |
| 96 | パーティションリスト | C++ | の上) | ○(1) | 簡単 | リートコード | |
| 98 | リストのソート | C++ | O(nlogn) | O(ログン) | 中くらい | リートコード、EPI | |
| 99 | リストの並べ替え | C++ | の上) | ○(1) | 中くらい | リートコード | |
| 102 | リンクリストサイクル | C++ | の上) | ○(1) | 中くらい | リートコード | |
| 103 | リンクリストサイクル II | C++ | の上) | ○(1) | 難しい | リートコード | |
| 104 | k 個のソートされたリストを結合する | C++ | O(n * logk) | ○(1) | 中くらい | リートコード | 積み上げ、分割し、征服する |
| 105 | ランダムなポインタを使用してリストをコピー | C++ | の上) | ○(1) | 中くらい | リートコード | |
| 106 | ソートされたリストを二分探索ツリーに変換 | C++ | の上) | O(ログン) | 中くらい | リートコード、EPI | |
| 112 | ソートされたリストから重複を削除 | C++ | の上) | ○(1) | 簡単 | リートコード、EPI | |
| 113 | ソート済みリストから重複を削除 II | C++ | の上) | ○(1) | 中くらい | リートコード、EPI | |
| 166 | リストの最後から N 番目のノード | C++ | の上) | ○(1) | 簡単 | リートコード | |
| 167 | 2 つのリストの合計 | C++ | の上) | ○(1) | 簡単 | リートコード | |
| 170 | リストの回転 | C++ | の上) | ○(1) | 中くらい | リートコード | |
| 173 | 挿入ソートリスト | C++ | O(n^2) | ○(1) | 簡単 | リートコード | |
| 174 | リストの末尾から N 番目のノードを削除 | C++ | の上) | ○(1) | 簡単 | リートコード | |
| 223 | 回文リンクリスト | C++ | の上) | ○(1) | 中くらい | リートコード | |
| 372 | 単一リンクリストの途中にあるノードを削除 | C++ | ○(1) | ○(1) | 簡単 | CTCI | |
| 380 | 2 つのリンクされたリストの交差 | C++ | O(m + n) | ○(1) | 簡単 | リートコード | |
| 450 | k-グループ内のノードを反転する | C++ | の上) | ○(1) | 難しい | リートコード | |
| 451 | ノードをペアで交換する | C++ | の上) | ○(1) | 簡単 | リートコード | |
| 452 | リンクされたリスト要素を削除する | C++ | の上) | ○(1) | ナイーブ | リートコード | |
| 511 | リンクされたリスト内の 2 つのノードを交換する | C++ | の上) | ○(1) | 中くらい | | |
木
| # | タイトル | 解決 | 時間 | 空間 | 困難 | タグ | 注記 |
|---|
| 7 | バイナリツリーのシリアル化 | C++ | の上) | おお) | 中くらい | | |
| 85 | 二分探索木にノードを挿入 | C++ | おお) | ○(1) | 簡単 | | |
| 88 | 最下位共通祖先 | C++ | の上) | おお) | 中くらい | EPI | |
| 175 | 二分木を反転 | C++ | の上) | おお) | 簡単 | リートコード | |
| 442 | トライの実装 | C++ | の上) | ○(1) | 中くらい | リートコード | トライ |
スタック
| # | タイトル | 解決 | 時間 | 空間 | 困難 | タグ | 注記 |
|---|
| 12 | 最小スタック | C++ | の上) | ○(1) | 中くらい | リートコード、EPI | |
| 40 | 2つのスタックによるキューの実装 | C++ | O(1)、償却済み | の上) | 中くらい | EPI | |
| 66 | バイナリ ツリーのプレオーダー トラバーサル | C++ | の上) | ○(1) | 簡単 | リートコード、EPI | Morris Traversal |
| 67 | バイナリ ツリーの順序トラバーサル | C++ | の上) | ○(1) | 簡単 | リートコード、EPI | Morris Traversal |
| 68 | バイナリ ツリー事後トラバーサル | C++ | の上) | ○(1) | 簡単 | リートコード、EPI | Morris Traversal |
| 122 | ヒストグラムの最大の長方形 | C++ | の上) | の上) | 難しい | リートコード、EPI | 昇順スタック |
| 126 | マックスツリー | C++ | の上) | の上) | 難しい | | 降順スタック |
| 367 | 式ツリーのビルド | C++ | の上) | の上) | 難しい | | |
| 368 | 式の評価 | C++ | の上) | の上) | 難しい | | |
| 369 | 式をポーランド語表記に変換する | C++ | の上) | の上) | 難しい | | |
| 370 | 式を逆ポーランド記法に変換する | C++ | の上) | の上) | 難しい | | |
| 421 | パスを単純化する | C++ | の上) | の上) | 中くらい | リートコード | |
| 423 | 有効な括弧 | C++ | の上) | の上) | 簡単 | リートコード | |
| 424 | 逆ポーランド記法の評価 | C++ | の上) | の上) | 中くらい | リートコード | |
| 473 | 単語の追加と検索 | C++ | O(分(n, h)) | O(分(n, h) | 中くらい | リートコード | トライ |
| 510 | 最大長方形 | C++ | O(m * n) | の上) | 難しい | リートコード | 昇順スタック |
| 528 | ネストされたリスト反復子を平坦化する | C++ | の上) | おお) | 中くらい | リートコード | |
列
| # | タイトル | 解決 | 時間 | 空間 | 困難 | タグ | 注記 |
|---|
| 362 | スライディング ウィンドウの最大値 | C++ | の上) | わかりました) | 難しい | EPI | デク、トリッキー |
ヒープ
| # | タイトル | 解決 | 時間 | 空間 | 困難 | タグ | 注記 |
|---|
| 4 | アグリーナンバーⅡ | C++ | の上) | ○(1) | 中くらい | CTCI | BST、ヒープ |
| 81 | データストリーム中央値 | C++ | O(nlogn) | の上) | 難しい | EPI | BST、ヒープ |
| 130 | ヒーピファイ | C++ | の上) | ○(1) | 中くらい | | |
| 364 | 雨水をためるⅡ | C++ | O(m * n * (logm + logn)) | O(m * n) | 難しい | | BFS、ヒープ、トリッキー |
| 518 | 超醜い数字 | C++ | O(n * k) | O(n + k) | 中くらい | リートコード | BST、ヒープ |
ハッシュテーブル
| # | タイトル | 解決 | 時間 | 空間 | 困難 | タグ | 注記 |
|---|
| 56 | 2 合計 | C++ | の上) | の上) | 中くらい | リートコード | |
| 124 | 最長連続シーケンス | C++ | の上) | の上) | 中くらい | リートコード、EPI | |
| 128 | ハッシュ関数 | C++ | の上) | ○(1) | 簡単 | | |
| 129 | 焼き直し | C++ | の上) | の上) | 中くらい | | |
| 138 | 部分配列の合計 | C++ | の上) | の上) | 簡単 | | |
| 186 | ライン上の最大ポイント | C++ | O(n^2) | の上) | 中くらい | リートコード | |
| 211 | 文字列の置換 | C++ | の上) | ○(1) | 簡単 | | |
| 384 | 繰り返し文字を含まない最長の部分文字列 | C++ | の上) | ○(1) | 中くらい | リートコード、EPI | |
| 386 | 最大 K 個の異なる文字を含む最長の部分文字列 | C++ | の上) | の上) | 中くらい | | |
| 432 | 有向グラフ内の弱い連結成分を見つける | C++ | O(nlogn) | の上) | 中くらい | | ユニオン検索 |
| 434 | 島の数 II | C++ | わかりました) | わかりました) | 難しい | | ユニオン検索 |
| 488 | ハッピーナンバー | C++ | わかりました) | わかりました) | 簡単 | リートコード | |
| 547 | 2 つの配列の交差 | C++ | O(m + n) | O(分(m, n)) | 簡単 | EPI、リートコード | 2 つのポインタ、二分探索 |
| 548 | 2 つの配列の交差 II | C++ | O(m + n) | O(分(m, n)) | 簡単 | EPI、リートコード | 2 つのポインタ、二分探索 |
データ構造
| # | タイトル | 解決 | 時間 | 空間 | 困難 | タグ | 注記 |
|---|
| 134 | LRUキャッシュ | C++ | ○(1) | わかりました) | 難しい | リートコード、EPI | リスト、ハッシュ |
数学
| # | タイトル | 解決 | 時間 | 空間 | 困難 | タグ | 注記 |
|---|
| 2 | 末尾のゼロ | C++ | ○(1) | ○(1) | 簡単 | リートコード | |
| 3 | 桁数 | C++ | ○(1) | ○(1) | 中くらい | CTCI | |
| 114 | ユニークなパス | C++ | O(分(m, n)) | ○(1) | 簡単 | リートコード、CTCI | DP、数学 |
| 163 | ユニークな二分探索ツリー | C++ | の上) | ○(1) | 中くらい | CTCI | DP、数学、 Catalan Number |
| 180 | バイナリ表現 | C++ | ○(1) | ○(1) | 難しい | CTCI | |
| 197 | 順列インデックス | C++ | O(n^2) | ○(1) | 簡単 | | |
| 198 | 順列インデックス II | C++ | O(n^2) | の上) | 中くらい | | |
| 394 | 並んだコイン | C++ | ○(1) | ○(1) | 簡単 | | |
| 411 | グレーコード | C++ | O(2^n) | ○(1) | 中くらい | リートコード | |
| 413 | 逆整数 | C++ | ○(1) | ○(1) | 中くらい | リートコード | |
| 414 | 2 つの整数を除算する | C++ | ○(1) | ○(1) | 中くらい | リートコード | |
| 418 | 整数からローマ字へ | C++ | の上) | ○(1) | 中くらい | リートコード | |
| 419 | ローマ字から整数へ | C++ | の上) | ○(1) | 中くらい | リートコード | |
| 428 | Pow(x, n) | C++ | ○(1) | ○(1) | 中くらい | リートコード | |
| 445 | コサイン類似度 | C++ Python | の上) | ○(1) | 簡単 | | |
| 517 | 醜い数字 | C++ | ○(1) | ○(1) | 簡単 | CTCI、リートコード | |
選別
| # | タイトル | 解決 | 時間 | 空間 | 困難 | タグ | 注記 |
|---|
| 5 | K 番目に大きい要素 | C++ | O(n) ~ O(n^2) | ○(1) | 中くらい | EPI | 2 つのポインタ、クイック ソート |
| 80 | 中央値 | C++ | の上) | ○(1) | 簡単 | EPI | |
| 139 | 最も近いサブアレイの合計 | C++ | O(nlogn) | の上) | 中くらい | | 選別 |
| 143 | カラーソート II | C++ | の上) | ○(1) | 中くらい | | |
| 148 | 色の並べ替え | C++ | の上) | ○(1) | 中くらい | リートコード | |
| 156 | マージ間隔 | C++ | O(nlogn) | ○(1) | 簡単 | リートコード、EPI | |
| 184 | 最大数 | C++ | O(nlogn) | ○(1) | 中くらい | リートコード | |
| 366 | フィボナッチ | C++ | の上) | ○(1) | 簡単 | | |
| 379 | 最小数を構築するために配列を並べ替えます | C++ | O(nlogn) | ○(1) | 中くらい | リートコード | |
| 387 | 最小の違い | C++ | O(max(m, n) * log(min(m, n))) | ○(1) | 中くらい | | 2 つのポインタ、二分探索 |
| 399 | ナットとボルトの問題 | C++ | O(nlogn) | O(ログン) | 中くらい | | クイックソート |
| 400 | 最大ギャップ | C++ Python | の上) | の上) | 難しい | リートコード | バケットソート |
| 463 | 整数のソート | C++ | O(n^2) | ○(1) | 簡単 | | 挿入ソート、選択ソート、バブルソート |
| 464 | 整数のソート II | C++ | O(nlogn) | の上) | 簡単 | | マージソート、ヒープソート、クイックソート |
| 507 | Wiggle ソート II | C++ | 平均O(n) | ○(1) | 中くらい | リートコード | トライパーティション |
| 508 | Wiggle 並べ替え | C++ | の上) | ○(1) | 中くらい | リートコード | |
再帰
| # | タイトル | 解決 | 時間 | 空間 | 困難 | タグ | 注記 |
|---|
| 22 | リストのフラット化 | C++ | の上) | おお) | 簡単 | | |
| 72 | インオーダーおよびポストオーダートラバーサルからバイナリツリーを構築する | C++ | の上) | の上) | 中くらい | リートコード、EPI | |
| 73 | 事前順序および順序トラバーサルからバイナリ ツリーを構築する | C++ | の上) | の上) | 中くらい | リートコード、EPI | |
| 93 | バランスの取れた二分木 | C++ | の上) | おお) | 簡単 | リートコード | |
| 94 | バイナリ ツリーの最大パス合計 | C++ | の上) | おお) | 中くらい | リートコード | |
| 95 | 二分探索ツリーの検証 | C++ | の上) | おお) | 中くらい | リートコード | |
| 97 | 二分木の最大深さ | C++ | の上) | おお) | 簡単 | リートコード | |
| 131 | 建物概要 | C++ Python | O(nlogn) | の上) | 難しい | EPI | ソート、BST |
| 140 | 高速パワー | C++ | O(ログン) | ○(1) | 中くらい | | |
| 155 | 二分木の最小深さ | C++ | の上) | おお) | 簡単 | リートコード | |
| 164 | ユニークな二分探索木 II | C++ | O(n * 4^n / n^(3/2)) | の上) | 中くらい | リートコード | |
| 177 | ソートされた配列を最小の高さの二分探索ツリーに変換 | C++ | の上) | O(ログン) | 簡単 | リートコード | |
| 201 | セグメントツリーの構築 | C++ | の上) | おお) | 中くらい | | セグメントツリー、BST |
| 202 | セグメントツリークエリ | C++ | おお) | おお) | 中くらい | | セグメントツリー、BST |
| 203 | セグメントツリーの変更 | C++ | おお) | おお) | 中くらい | | セグメントツリー、BST |
| 205 | 間隔の最小数 | C++ | ビルドツリー: O(n) 、クエリ: (h) | おお) | 難しい | | セグメントツリー、BST |
| 206 | インターバル合計 | C++ | ビルドツリー: O(n) 、クエリ: O(logn) | の上) | 難しい | | セグメントツリー、BIT |
| 207 | インターバルサムⅡ | C++ | ビルドツリー: O(n) 、クエリ: O(logn) 、変更: O(logn) | の上) | 難しい | | セグメントツリー、BIT |
| 245 | サブツリー | C++ | O(m * n) | ○(1) | 簡単 | | Morris Traversal |
| 247 | セグメントツリークエリ II | C++ | おお) | おお) | 難しい | | セグメントツリー、BST |
| 248 | 小さい数の数 | C++ | ビルドツリー: O(n) 、クエリ: O(logn) | おお) | 中くらい | | セグメントツリー、BST |
| 371 | 再帰による数値の出力 | C++ | の上) | の上) | 中くらい | | |
| 375 | バイナリ ツリーのクローンを作成する | C++ | の上) | おお) | 簡単 | | |
| 378 | 二分探索木を二重リンクリストに変換 | C++ | の上) | おお) | 中くらい | | |
| 439 | セグメントツリービルド II | C++ | の上) | おお) | 中くらい | | セグメントツリー、BST |
| 453 | バイナリ ツリーをリンク リストに平坦化する | C++ | の上) | おお) | 簡単 | リートコード | |
| 469 | 同一のバイナリ ツリー | C++ | の上) | おお) | 簡単 | | |
| 532 | リバースペア | C++ | O(nlogn) | の上) | 中くらい | それ自体の前の小さい数のカウントのバリアント | ビット、マージソート |
| 535 | ハウス強盗Ⅲ | C++ | の上) | おお) | 中くらい | リートコード | |
二分探索
| # | タイトル | 解決 | 時間 | 空間 | 困難 | タグ | 注記 |
|---|
| 14 | ターゲットの最初の位置 | C++ | O(ログン) | ○(1) | 簡単 | | |
| 28 | 2D マトリックスの検索 | C++ | O(logm + logn) | ○(1) | 簡単 | リートコード | |
| 60 | 挿入位置の検索 | C++ | O(ログン) | ○(1) | 簡単 | リートコード | |
| 61 | 範囲を検索する | C++ | O(ログン) | ○(1) | 中くらい | リートコード | |
| 62 | 回転ソート配列での検索 | C++ | O(ログン) | ○(1) | 中くらい | リートコード | |
| 63 | 回転ソート配列 II での検索 | C++ | O(ログン) | ○(1) | 中くらい | リートコード | |
| 65 | 2 つのソートされた配列の中央値 | C++ | O(log(min(m, n))) | ○(1) | 難しい | リートコード、EPI | トリッキー |
| 74 | 最初の不良バージョン | C++ | O(ログン) | ○(1) | 中くらい | | |
| 75 | ピーク要素の検索 | C++ | O(ログン) | ○(1) | 中くらい | リートコード | |
| 76 | 最長の増加サブシーケンス | C++ | O(nlogn) | の上) | 中くらい | CTCI | |
| 141 | 平方(x) | C++ | O(ログン) | ○(1) | 簡単 | リートコード | |
| 159 | 回転ソートされた配列の最小値を見つける | C++ | O(ログン) | ○(1) | 中くらい | リートコード | |
| 160 | 回転ソート配列 II の最小値を求める | C++ | O(ログン) | ○(1) | 中くらい | リートコード | |
| 183 | 木材のカット | C++ | O(nlogL) | ○(1) | 中くらい | | |
| 390 | ピーク要素の検索 II | C++ Java Python | O(m + n) | ○(1) | 難しい | | |
| 437 | コピーブック | C++ | O(nlogp) | ○(1) | 難しい | UVa 714 | |
幅優先検索
| # | タイトル | 解決 | 時間 | 空間 | 困難 | タグ | 注記 |
|---|
| 69 | バイナリ ツリー レベルの順序トラバーサル | C++ | の上) | の上) | 中くらい | リートコード | BFS |
| 70 | バイナリ ツリー レベルの順序トラバーサル II | C++ | の上) | の上) | 中くらい | リートコード | BFS |
| 71 | バイナリ ツリー ジグザグ レベル順序トラバーサル | C++ | の上) | の上) | 中くらい | リートコード | BFS |
| 120 | ワードラダー | C++ | O(n * d) | O(d) | 中くらい | リートコード | BFS |
| 121 | ワードラダーⅡ | C++ | O(n * d) | O(d) | 難しい | リートコード | BFS、バックトレース |
| 127 | トポロジカルソート | C++ | O(|V|+|E|) | O(|E|) | 中くらい | | DFS、BFS |
| 137 | クローングラフ | C++ | O(|V|+|E|) | O(|V|) | 中くらい | | BFS |
| 176 | グラフ内の 2 つのノード間のルート | C++ | の上) | の上) | 中くらい | | DFS、BFS |
| 178 | グラフ有効ツリー | C++ | O(|V| + |E|) | O(|V| + |E|) | 中くらい | リートコード | |
| 431 | 無向グラフで連結成分を見つける | C++ | の上) | の上) | 中くらい | | BFS |
| 477 | 囲まれた地域 | C++ | O(m * n) | O(m + n) | 中くらい | リートコード | |
深さ優先検索
| # | タイトル | 解決 | 時間 | 空間 | 困難 | タグ | 注記 |
|---|
| 90 | KサムⅡ | C++ | O(k * C(n, k)) | わかりました) | 中くらい | | |
| 376 | バイナリ ツリー パスの合計 | C++ | の上) | おお) | 簡単 | リートコード | |
| 433 | 島の数 | C++ | O(m * n) | O(m * n) | 簡単 | リートコード | DFS |
| 480 | バイナリ ツリー パス | C++ | O(n * h) | おお) | 簡単 | リートコード | |
後戻り
| # | タイトル | 解決 | 時間 | 空間 | 困難 | タグ | 注記 |
|---|
| 15 | 順列 | C++ | O(n * n!) | の上) | 中くらい | リートコード、EPI | |
| 16 | 順列 II | C++ | O(n * n!) | の上) | 中くらい | リートコード、EPI | |
| 17 | サブセット | C++ | O(n * 2^n) | ○(1) | 中くらい | リートコード | |
| 18 | サブセット II | C++ | O(n * 2^n) | ○(1) | 中くらい | リートコード | |
| 33 | N-クイーンズ | C++ | O(n * n!) | の上) | 中くらい | リートコード、EPI | |
| 34 | N-クイーンズ II | C++ | O(n * n!) | の上) | 中くらい | リートコード、EPI | |
| 123 | 単語検索 | C++ | O(m * n * l) | O(l) | 中くらい | リートコード | |
| 132 | 単語検索Ⅱ | C++ | O(m * n * l) | O(l) | 難しい | | トライ、DFS |
| 135 | 組み合わせ合計 | C++ | O(k * n^k) | わかりました) | 中くらい | リートコード | DFS |
| 136 | 回文パーティショニング | C++ | O(2^n) | の上) | 簡単 | リートコード、EPI | |
| 152 | 組み合わせ | C++ | O(k * n^k) | わかりました) | 中くらい | リートコード、EPI | |
| 153 | 組み合わせ和Ⅱ | C++ | O(k * C(n, k)) | わかりました) | 中くらい | リートコード | DFS |
| 425 | 電話番号の文字の組み合わせ | C++ | O(n * 4^n) | の上) | 中くらい | リートコード | |
| 426 | IPアドレスを復元する | C++ | ○(1) | ○(1) | 中くらい | リートコード | |
| 427 | 括弧を生成する | C++ | O(4^n / n^(3/2)) | の上) | 中くらい | リートコード | |
二分探索木
| # | タイトル | 解決 | 時間 | 空間 | 困難 | タグ | 注記 |
|---|
| 11 | 二分探索木の検索範囲 | C++ | の上) | おお) | 中くらい | EPI | |
| 86 | 二分探索ツリー反復子 | C++ | ○(1) | おお) | 難しい | リートコード | |
| 87 | 二分探索ツリー内のノードを削除する | C++ | おお) | おお) | 難しい | | |
| 249 | それより前の小さい数値の数 | C++ | O(nlogn) | の上) | 難しい | | BST、BIT、分割統治、マージソート |
| 360 | スライディング ウィンドウの中央値 | C++ | O(nlogw) | お(わ) | 難しい | | BST、トリッキー |
| 391 | 空を飛ぶ飛行機の数 | C++ | O(nlogn) | の上) | 簡単 | | BST、ヒープ |
| 401 | ソートされた行列の K 番目に小さい数 | C++ | O(klog(min(m, n, k))) | O(min(m, n, k)) | 中くらい | | BST、ヒープ |
動的プログラミング
| # | タイトル | 解決 | 時間 | 空間 | 困難 | タグ | 注記 |
|---|
| 20 | サイコロの合計 | C++ | O(n^2) | の上) | 難しい | | |
| 29 | インターリーブ文字列 | C++ | O(m * n) | O(分(m, n)) | 中くらい | EPI | |
| 43 | 最大サブアレイ III | C++ | O(k * n) | O(k * n) | 難しい | | |
| 77 | 最長共通部分列 | C++ | O(m * n) | O(分(m, n)) | 中くらい | | |
| 79 | 最長の共通部分文字列 | C++ | O(m * n) | O(分(m, n)) | 中くらい | | |
| 89 | Kサム | C++ | O(k * n * t) | O(n * t) | 難しい | | |
| 91 | 最小調整コスト | C++ | O(k * n * t) | わかりました) | 中くらい | | |
| 92 | バックパック | C++ | O(m * n) | オ(メートル) | 簡単 | | |
| 107 | ワードブレイク | C++ | O(n * l^2) | の上) | 中くらい | リートコード、EPI | |
| 108 | 回文分割 II | C++ | O(n^2) | の上) | 中くらい | リートコード、EPI | |
| 109 | 三角形 | C++ | の上) | の上) | 簡単 | リートコード、EPI | |
| 110 | 最小パス合計 | C++ | O(m * n) | O(分(m, n)) | 簡単 | リートコード、EPI | |
| 111 | 階段を登る | C++ | O(ログン) | ○(1) | 簡単 | リートコード | |
| 115 | ユニークなパス II | C++ | O(m * n) | O(分(m, n)) | 簡単 | リートコード、CTCI | DP、数学 |
| 118 | 異なるサブシーケンス | C++ | O(m * n) | オ(メートル) | 中くらい | リートコード | DP |
| 119 | 距離の編集 | C++ | O(m * n) | O(分(m, n)) | 中くらい | リートコード、CTCI | DP |
| 125 | バックパックⅡ | C++ | O(m * n) | オ(メートル) | 中くらい | | |
| 149 | 株を売買するのに最適な時期 | C++ | の上) | ○(1) | 中くらい | リートコード、EPI | |
| 150 | 株式を売買するのに最適な時期 II | C++ | の上) | ○(1) | 中くらい | リートコード、EPI | |
| 151 | 株式を売買するのに最適な時期 III | C++ | の上) | ○(1) | 中くらい | リートコード、EPI | |
| 154 | 正規表現のマッチング | C++ | O(m * n) | オ(メートル) | 難しい | リートコード | DP、再帰 |
| 168 | 破裂風船 | C++ | O(n^3) | O(n^2) | 中くらい | リートコード | |
| 191 | 最大積サブ配列 | C++ | の上) | ○(1) | 中くらい | リートコード | |
| 392 | 家の強盗 | C++ | の上) | ○(1) | 中くらい | リートコード | |
| 393 | 株式を売買するのに最適な時期 IV | C++ | O(k * n) | わかりました) | 難しい | リートコード、EPI | |
| 395 | 並んだコイン II | C++ | の上) | ○(1) | 中くらい | | |
| 396 | 並んだコイン III | C++ | O(n^2) | の上) | 難しい | | |
| 397 | 最長の増加連続サブシーケンス | C++ | の上) | ○(1) | 簡単 | | |
| 398 | 最長増加連続サブシーケンス II | C++ | O(m * n) | O(m * n) | 難しい | | |
| 403 | 連続部分配列和 II | C++ | の上) | ○(1) | 中くらい | EPI | |
| 430 | スクランブルストリング | C++ | O(n^4) | O(n^3) | 難しい | リートコード | |
| 435 | 郵便局の問題 | C++ | O(k * n^2) | の上) | 難しい | PKU 1160 | |
| 436 | マキシマムスクエア | C++ | O(m * n) | の上) | 中くらい | リートコード | |
| 512 | デコード方法 | C++ | の上) | ○(1) | 中くらい | リートコード | |
| 513 | 完全な正方形 | C++ | O(n * sqrt(n)) | の上) | 中くらい | リートコード | |
| 514 | ペイントフェンス | C++ | の上) | ○(1) | 簡単 | リートコード | |
| 515 | ペイントハウス | C++ | の上) | ○(1) | 中くらい | リートコード | |
| 516 | ペイントハウスⅡ | C++ | O(n * k) | わかりました) | 難しい | リートコード | |
| 534 | ハウスロバー II | C++ | の上) | ○(1) | 中くらい | リートコード | |
| 564 | バックパック VI | C++ | O(n * t) | O(t) | 中くらい | | |
よく深い
| # | タイトル | 解決 | 時間 | 空間 | 困難 | タグ | 注記 |
|---|
| 41 | 最大サブアレイ | C++ | の上) | ○(1) | 簡単 | リートコード | |
| 42 | 最大サブアレイ II | C++ | の上) | の上) | 中くらい | | |
| 44 | 最小サブアレイ | C++ | の上) | ○(1) | 簡単 | | |
| 45 | 最大サブアレイ差 | C++ | の上) | の上) | 中くらい | | |
| 116 | ジャンプゲーム | C++ | の上) | ○(1) | 中くらい | リートコード | |
| 117 | ジャンプゲームⅡ | C++ | の上) | ○(1) | 中くらい | リートコード | |
| 182 | 数字の削除 | C++ | の上) | の上) | 中くらい | | |
| 187 | ガソリンスタンド | C++ | の上) | ○(1) | 簡単 | リートコード | |
| 192 | ワイルドカードマッチング | C++ | O(m + n) | ○(1) | 難しい | リートコード | 貪欲、DP、再帰 |
| 402 | 連続部分配列の合計 | C++ | の上) | ○(1) | 中くらい | EPI | |
| 412 | あめ | C++ | の上) | の上) | 難しい | リートコード | よく深い |
| 552 | 最大数の作成 | C++ | O(k * (m + n + k)) ~ O(k * (m + n + k^2)) | O(m + n + k^2) | 難しい | リートコード | 貪欲、DP |
OOデザイン
| # | タイトル | 解決 | 時間 | 空間 | 困難 | タグ | 注記 |
|---|
| 204 | シングルトン | C++ | ○(1) | ○(1) | 簡単 | | |
| 208 | 代入演算子のオーバーロード (C++ のみ) | C++ | の上) | ○(1) | 中くらい | | |
| 496 | おもちゃ工場 | C++ | ○(1) | ○(1) | 簡単 | | |
| 497 | シェイプファクトリー | C++ | ○(1) | ○(1) | 簡単 | | |
| 498 | 駐車場 | C++ | O(n * m * k) | O(n * m * k) | 難しい | CTCI | OO デザイン、Pimpl イディオム、スマート ポインター |
システム設計
| # | タイトル | 解決 | 時間 | 空間 | 困難 | タグ | 注記 |
|---|
| 501 | ミニツイッター | C++ | O(クログ) | O(t + f) | 中くらい | | |