Coding Patterns

一般的(いっぱんてき) なコーディングパターンの整理(せいり)基礎(きそ) から応用(おうよう) までのアルゴリズム技法(ぎほう)網羅(もうら)

Foundation Patterns

パターン難易度(なんいど)コアアイデア使用例(しようれい)実務応用(じつむおうよう)
Two PointersEasy() つの指針(ポインタ) でデータ構造(こうぞう)移動(いどう)回文(かいぶん) 検査(けんさ)配列(はいれつ) マージ、ペア検索(けんさく)DB索引(さくいん) スキャン、テキスト比較(ひかく)重複(ちょうふく) 除去(じょきょ)
Sliding WindowEasy/Medium可変(かへん) サイズ(まど)連続(れんぞく) (れつ)処理(しょり)最長(さいちょう) 非重複(ひちょうふく) 部分(ぶぶん) 文字列(もじれつ)最小(さいしょう) 部分(ぶぶん) 配列(はいれつ)通信量(つうしんりょう) 監視(かんし) 、ユーザー行動(こうどう) 分析(ぶんせき)移動(いどう) 平均(へいきん)
Fast & Slow PointersEasy(こと) なる速度(そくど)指針(ポインタ)循環(じゅんかん) 検出(けんしゅつ)リスト(かん) 検出(けんしゅつ)(かん) 開始(かいし) 位置(いち)中点(ちゅうてん)デッドロック検出(けんしゅつ)循環(じゅんかん) 参照(さんしょう)無限(むげん) ループ診断(しんだん)

Search & Sort

パターン難易度(なんいど)コアアイデア使用例(しようれい)実務応用(じつむおうよう)
Modified Binary SearchMedium二分(にぶん) 探索(たんさく)変形(へんけい)() 標準(ひょうじゅん) ケースに対応(たいおう)回転(かいてん) 配列(はいれつ) 探索(たんさく)最近(さいきん) ()無限(むげん) 数列(すうれつ)DB索引(さくいん) 最適化(さいてきか)時系列(じけいれつ) 検索(けんさく) 、git bisect
Cyclic SortEasy数値(すうち) 範囲(はんい) 特性(とくせい)利用(りよう) した原地(インプレース) ソート欠損(けっそん) 数字(すうじ)重複(ちょうふく) 数字(すうじ)最小(さいしょう) 欠損(けっそん) 正数(せいすう)データ完全性(かんぜんせい) 検査(けんさ)番号(ばんごう) 管理(かんり)割当(わりあて) 最適化(さいてきか)

Data Structure Applications

パターン難易度(なんいど)コアアイデア使用例(しようれい)実務応用(じつむおうよう)
LinkedList PatternsEasy/Medium指針(ポインタ) 操作(そうさ)原地(インプレース) 変更(へんこう)リスト反転(はんてん)中間(ちゅうかん) ノード、ソート済みリストマージLRU Cache、Memory Pool、タスクキュー
Tree PatternsMedium()走査(そうさ)再構築(さいこうちく)各種(かくしゅ) 走査(そうさ) 、パス() 、シリアライズDOM操作(そうさ) 、ファイルシステム、(しき) 解析(かいせき)
Graph PatternsHardグラフ走査(そうさ)最短(さいたん) 経路(けいろ)連結性(れんけつせい)DFS/BFS、トポロジカルソート、DijkstraSNS分析(ぶんせき) 、ネットワーク経路(けいろ)依存(いぞん) 解決(かいけつ)

Intervals & Matrix

パターン難易度(なんいど)コアアイデア使用例(しようれい)実務応用(じつむおうよう)
Merge IntervalsMedium区間(くかん)重複(ちょうふく)境界(きょうかい) 処理(しょり)時間(じかん) 区間(くかん) マージ、会議室(かいぎしつ) 要件(ようけん)重複(ちょうふく) 区間(くかん)予約(よやく) システム、カレンダー競合(きょうごう) 、タスク調整(ちょうせい)
Islands (Matrix Traversal)Medium二次元(にじげん) 行列(ぎょうれつ)連結性(れんけつせい) =グラフ走査(そうさ)(しま)(かず)最大(さいだい) 面積(めんせき)囲碁(いご) 盤面(ばんめん)画像(がぞう) 領域(りょういき) 分割(ぶんかつ)地図(ちず) 認識(にんしき)回路(かいろ) 連結性(れんけつせい)

Stack & Queue Applications

パターン難易度(なんいど)コアアイデア使用例(しようれい)実務応用(じつむおうよう)
Monotonic Stack/QueueMedium/Hard単調性(たんちょうせい)維持(いじ)前後(ぜんご) 関係(かんけい)解決(かいけつ)(つぎ)(おお) きい要素(ようそ)最大(さいだい) 矩形(くけい)株価(かぶか) スパン価格(かかく) 動向(どうこう) 分析(ぶんせき) 、トレンド監視(かんし) 、リアルタイム順位(じゅんい)

Advanced Data Structures

パターン難易度(なんいど)コアアイデア使用例(しようれい)実務応用(じつむおうよう)
Two HeapsMedium最大(さいだい) /最小(さいしょう) ヒープで動的(どうてき) 中央値(ちゅうおうち)維持(いじ)データストリーム中央値(ちゅうおうち)(まど) 中央値(ちゅうおうち)最大(さいだい) 資本(しほん)応答(おうとう) 時間(じかん) 監視(かんし)金融(きんゆう) 分析(ぶんせき)負荷(ふか) 分散(ぶんさん)
Top K ElementsMediumヒープ構造(こうぞう)上位(じょうい) K 要素(ようそ)維持(いじ)K 番目(ばんめ)(おお) きい要素(ようそ) 、K () 最頻(さいひん) 、K () 最近(さいきん) (てん)検索(けんさく) 結果(けっか) 順位(じゅんい)人気(にんき) 項目(こうもく) 、リソース監視(かんし)
K-way MergeHardK () のソート() みストリームをマージK () リストマージ、K () 配列(はいれつ) マージ、最小(さいしょう) 区間(くかん)分散(ぶんさん) データ統合(とうごう) 、ログマージ、並列(へいれつ) 結果(けっか) 統合(とうごう)

Dynamic Programming

パターン難易度(なんいど)コアアイデア使用例(しようれい)実務応用(じつむおうよう)
0/1 KnapsackHard制約(せいやく) 条件(じょうけん) () での最適(さいてき) 選択(せんたく)ナップザック、部分(ぶぶん) 集合(しゅうごう) () 、リソース配分(はいぶん)投資(とうし) ポートフォリオ、サーバーリソース、予算(よさん) 計画(けいかく)
Fibonacci NumbersEasy/Medium再帰(さいき) 分解(ぶんかい)中間(ちゅうかん) 結果(けっか)保存(ほぞん)階段(かいだん) (のぼ) り、ジャンプゲーム、デコード方法(ほうほう)再帰(さいき) 最適化(さいてきか)数列(すうれつ) 予測(よそく)自然(しぜん) 成長(せいちょう) パターン
Palindromic SubsequenceHardDPで回文(かいぶん) 関連(かんれん) 問題(もんだい)解決(かいけつ)最長(さいちょう) 回文(かいぶん) 部分(ぶぶん) (れつ)回文(かいぶん) 部分(ぶぶん) 文字列(もじれつ) (すう)最小(さいしょう) 挿入(そうにゅう)DNA配列(はいれつ) 分析(ぶんせき) 、テキスト類似度(るいじど) 、NLP
LCS/LCSubstringHard(ふた) つの(れつ)類似性(るいじせい)比較(ひかく)最長(さいちょう) 共通(きょうつう) 部分(ぶぶん) (れつ)最小(さいしょう) 編集(へんしゅう) 距離(きょり)文字列(もじれつ) 変換(へんかん)生物(せいぶつ) 配列(はいれつ) 比較(ひかく) 、バージョン差分(さぶん)盗作(とうさく) 検出(けんしゅつ)

Combination & Enumeration

パターン難易度(なんいど)コアアイデア使用例(しようれい)実務応用(じつむおうよう)
SubsetsMedium()() わせで(すべ) ての部分(ぶぶん) 集合(しゅうごう)生成(せいせい)(すべ) ての部分(ぶぶん) 集合(しゅうごう)大小(だいしょう) 文字(もじ) ()() わせ、順列(じゅんれつ) ()() わせ権限(けんげん) システム、機能(きのう) ()() えテスト、メニュー選択肢(せんたくし)
BacktrackingHard試行(しこう) 錯誤(さくご) 探索(たんさく) とバックトラックNクイーン(くいーん)数独(すうどく)単語(たんご) 検索(けんさく)経路(けいろ) 計画(けいかく) 、リソース調整(ちょうせい)自動(じどう) テスト
State MachineHard状態(じょうたい)遷移(せんい)抽象化(ちゅうしょうか)正規(せいき) 表現(ひょうげん) マッチング、文字列(もじれつ) 解析(かいせき) 、ゲームロジック注文(ちゅうもん) 状態(じょうたい) 管理(かんり) 、ワークフロー、プロトコル解析(かいせき)

Mathematics & Bit Manipulation

パターン難易度(なんいど)コアアイデア使用例(しようれい)実務応用(じつむおうよう)
Bitwise XORMediumXOR特性(とくせい)数値(すうち) 問題(もんだい)解決(かいけつ)唯一(ゆいいつ)数字(すうじ)変数(へんすう) 交換(こうかん)奇偶(きぐう) 検出(けんしゅつ)暗号(あんごう) アルゴリズム、データ圧縮(あっしゅく) 、ハードウェア設計(せっけい)
Number TheoryMedium/Hard数学(すうがく) 原理(げんり)数論(すうろん)応用(おうよう)素数(そすう) 判定(はんてい) 、GCD/LCM、高速(こうそく) 累乗(るいじょう)暗号(あんごう) システム、ハッシュ関数(かんすう) 、データ検証(けんしょう)
Prefix SumMedium累積(るいせき) ()事前(じぜん) 計算(けいさん)区間(くかん) クエリを最適化(さいてきか)区間(くかん) () クエリ、部分(ぶぶん) 配列(はいれつ) ()累積(るいせき) 頻度(ひんど)金融(きんゆう) データ分析(ぶんせき)統計(とうけい) 処理(しょり)積分(せきぶん) 画像(がぞう)

String Processing

パターン難易度(なんいど)コアアイデア使用例(しようれい)実務応用(じつむおうよう)
String ManipulationMedium/Hard効率的(こうりつてき)文字列(もじれつ) 検索(けんさく)処理(しょり)KMP、Rabin-Karp、共通(きょうつう) 接頭辞(せっとうじ) /接尾辞(せつびじ)テキストエディタ、検索(けんさく) エンジン、DNA分析(ぶんせき)
TrieMedium() 構造(こうぞう)文字列(もじれつ) 集合(しゅうごう)格納(かくのう)オートコンプリート、スペルチェック、辞書(じしょ) 実装(じっそう)検索(けんさく) 候補(こうほ)入力(にゅうりょく) メソッド、URL経路(けいろ)