12 の問題集を、一本のルートで
Dokicode は LeetCode の問題 2,000 問以上を 12 の問題集にまとめています。選んだヒロインが決まった順番で一問ずつ出題し、スライディングウィンドウから始めてグラフアルゴリズムまで一緒に進みます。
書斎を開くルートの仕組み
12 の問題集は一本のルート上に並び、2 つのトラックに分かれています。トラック 1 は再帰を使わない 8 テーマ、トラック 2 は再帰を使う 4 テーマです。新しいルートは必ず「スライディングウィンドウと Two Pointers」の最初のセクションから始まり、ヒロインがルート順にまだ解いていない次の問題を出してくれます。
これまでに練習してきた人も、最初からやり直す必要はありません。学習契約を結ぶときに始めたいテーマを選ぶと、それより前のテーマはすべて「以前に解いた」になります。問題集、章、セクション単位で個別にチェックすることもできます。チェックした問題はルートで飛ばされ、報酬の対象にもなりません。
続いてレーティングの上限を選びます。1600 まで、1900 まで、上限なしの 3 つです。上限を超える問題はチャレンジリストで待機し、上限を上げる前にはヒロインが確認してくれます。順番はあくまで目安でロックはかからないので、全問題集からいつでも好きな問題集を開けます。
問題集は huxulm/lc-rating がまとめた EndlessCheng(灵茶山艾府)さんの問題リストに基づき、難易度は zerotrac さんの LeetCode コンテストレーティングを使っています。6 人のヒロインについてはヒロイン紹介を、その他の疑問はよくある質問をご覧ください。
トラック 1:再帰なし
1. スライディングウィンドウと Two Pointers
固定長・可変長のウィンドウ、一列・二列の Two Pointers、Three Pointers、グループ分けループ。
2. 二分探索
基本の二分探索、答えの二分探索、三分探索。
3. 単調スタック
次に大きい要素、ヒストグラムの長方形、寄与法、辞書順最小。
4. データ構造
累積和、いもす法、スタック、キュー、ヒープ、トライ木、Union-Find、BIT とセグメント木。
5. ビット演算
XOR・AND・OR の性質、ビットごとの寄与、試し埋め、線形基底。
6. 貪欲法
貪欲戦略、区間スケジューリング、文字列と数学の貪欲法、構築問題。
7. 数学
整数論、組合せ論、確率、ゲーム理論、計算幾何。
8. 文字列とオートマトン
KMP、Z アルゴリズム、Manacher、ローリングハッシュ、Aho-Corasick、接尾辞配列。
トラック 2:再帰あり
9. 連結リスト・木・バックトラッキング
連結リスト、二分木、一般の木、バックトラッキング、分割統治。
10. グリッドと行列
グリッド上の DFS、BFS、0-1 BFS。
11. 動的計画法
ナップサック、LCS と LIS、状態機械、区間 DP、bit DP、桁 DP、木 DP。
12. グラフアルゴリズム
グラフ探索、トポロジカルソート、最短経路、最小全域木、ネットワークフロー。