Coding Patterns
一般的 なコーディングパターンの整理 、基礎 から応用 までのアルゴリズム技法 を網羅 。
Foundation Patterns
| パターン | 難易度 | コアアイデア | 使用例 | 実務応用 |
|---|---|---|---|---|
| Two Pointers | Easy | 二 つの指針 でデータ構造 を移動 | 回文 検査 、配列 マージ、ペア検索 | DB索引 スキャン、テキスト比較 、重複 除去 |
| Sliding Window | Easy/Medium | 可変 サイズ窓 で連続 列 を処理 | 最長 非重複 部分 文字列 、最小 部分 配列 | 通信量 監視 、ユーザー行動 分析 、移動 平均 |
| Fast & Slow Pointers | Easy | 異 なる速度 の指針 で循環 検出 | リスト環 検出 、環 開始 位置 、中点 | デッドロック検出 、循環 参照 、無限 ループ診断 |
Search & Sort
| パターン | 難易度 | コアアイデア | 使用例 | 実務応用 |
|---|---|---|---|---|
| Modified Binary Search | Medium | 二分 探索 の変形 で非 標準 ケースに対応 | 回転 配列 探索 、最近 値 、無限 数列 | DB索引 最適化 、時系列 検索 、git bisect |
| Cyclic Sort | Easy | 数値 範囲 特性 を利用 した原地 ソート | 欠損 数字 、重複 数字 、最小 欠損 正数 | データ完全性 検査 、番号 管理 、割当 最適化 |
Data Structure Applications
| パターン | 難易度 | コアアイデア | 使用例 | 実務応用 |
|---|---|---|---|---|
| LinkedList Patterns | Easy/Medium | 指針 操作 と原地 変更 | リスト反転 、中間 ノード、ソート済みリストマージ | LRU Cache、Memory Pool、タスクキュー |
| Tree Patterns | Medium | 木 の走査 と再構築 | 各種 走査 、パス和 、シリアライズ | DOM操作 、ファイルシステム、式 解析 |
| Graph Patterns | Hard | グラフ走査 、最短 経路 、連結性 | DFS/BFS、トポロジカルソート、Dijkstra | SNS分析 、ネットワーク経路 、依存 解決 |
Intervals & Matrix
| パターン | 難易度 | コアアイデア | 使用例 | 実務応用 |
|---|---|---|---|---|
| Merge Intervals | Medium | 区間 の重複 と境界 処理 | 時間 区間 マージ、会議室 要件 、重複 区間 | 予約 システム、カレンダー競合 、タスク調整 |
| Islands (Matrix Traversal) | Medium | 二次元 行列 の連結性 =グラフ走査 | 島 の数 、最大 面積 、囲碁 盤面 | 画像 領域 分割 、地図 認識 、回路 連結性 |
Stack & Queue Applications
| パターン | 難易度 | コアアイデア | 使用例 | 実務応用 |
|---|---|---|---|---|
| Monotonic Stack/Queue | Medium/Hard | 単調性 を維持 し前後 関係 を解決 | 次 の大 きい要素 、最大 矩形 、株価 スパン | 価格 動向 分析 、トレンド監視 、リアルタイム順位 |
Advanced Data Structures
| パターン | 難易度 | コアアイデア | 使用例 | 実務応用 |
|---|---|---|---|---|
| Two Heaps | Medium | 最大 /最小 ヒープで動的 中央値 を維持 | データストリーム中央値 、窓 中央値 、最大 資本 | 応答 時間 監視 、金融 分析 、負荷 分散 |
| Top K Elements | Medium | ヒープ構造 で上位 K 要素 を維持 | K 番目 に大 きい要素 、K 個 最頻 、K 個 最近 点 | 検索 結果 順位 、人気 項目 、リソース監視 |
| K-way Merge | Hard | K 個 のソート済 みストリームをマージ | K 個 リストマージ、K 個 配列 マージ、最小 区間 | 分散 データ統合 、ログマージ、並列 結果 統合 |
Dynamic Programming
| パターン | 難易度 | コアアイデア | 使用例 | 実務応用 |
|---|---|---|---|---|
| 0/1 Knapsack | Hard | 制約 条件 下 での最適 選択 | ナップザック、部分 集合 和 、リソース配分 | 投資 ポートフォリオ、サーバーリソース、予算 計画 |
| Fibonacci Numbers | Easy/Medium | 再帰 分解 と中間 結果 の保存 | 階段 昇 り、ジャンプゲーム、デコード方法 | 再帰 最適化 、数列 予測 、自然 成長 パターン |
| Palindromic Subsequence | Hard | DPで回文 関連 問題 を解決 | 最長 回文 部分 列 、回文 部分 文字列 数 、最小 挿入 | DNA配列 分析 、テキスト類似度 、NLP |
| LCS/LCSubstring | Hard | 二 つの列 の類似性 を比較 | 最長 共通 部分 列 、最小 編集 距離 、文字列 変換 | 生物 配列 比較 、バージョン差分 、盗作 検出 |
Combination & Enumeration
| パターン | 難易度 | コアアイデア | 使用例 | 実務応用 |
|---|---|---|---|---|
| Subsets | Medium | 組 み合 わせで全 ての部分 集合 を生成 | 全 ての部分 集合 、大小 文字 組 み合 わせ、順列 組 み合 わせ | 権限 システム、機能 切 り替 えテスト、メニュー選択肢 |
| Backtracking | Hard | 試行 錯誤 探索 とバックトラック | Nクイーン 、数独 、単語 検索 | 経路 計画 、リソース調整 、自動 テスト |
| State Machine | Hard | 状態 と遷移 の抽象化 | 正規 表現 マッチング、文字列 解析 、ゲームロジック | 注文 状態 管理 、ワークフロー、プロトコル解析 |
Mathematics & Bit Manipulation
| パターン | 難易度 | コアアイデア | 使用例 | 実務応用 |
|---|---|---|---|---|
| Bitwise XOR | Medium | XOR特性 で数値 問題 を解決 | 唯一 の数字 、変数 交換 、奇偶 検出 | 暗号 アルゴリズム、データ圧縮 、ハードウェア設計 |
| Number Theory | Medium/Hard | 数学 原理 と数論 の応用 | 素数 判定 、GCD/LCM、高速 累乗 | 暗号 システム、ハッシュ関数 、データ検証 |
| Prefix Sum | Medium | 累積 和 の事前 計算 で区間 クエリを最適化 | 区間 和 クエリ、部分 配列 和 、累積 頻度 | 金融 データ分析 、統計 処理 、積分 画像 |
String Processing
| パターン | 難易度 | コアアイデア | 使用例 | 実務応用 |
|---|---|---|---|---|
| String Manipulation | Medium/Hard | 効率的 な文字列 検索 と処理 | KMP、Rabin-Karp、共通 接頭辞 /接尾辞 | テキストエディタ、検索 エンジン、DNA分析 |
| Trie | Medium | 木 構造 で文字列 集合 を格納 | オートコンプリート、スペルチェック、辞書 実装 | 検索 候補 、入力 メソッド、URL経路 |