はじめに
ポイント
- LeetCodeの問題をデータ構造・アルゴリズムによって分類しました。
- 簡単な問題がなるべく初めに来るように整理しています。
この記事のメリット
- データ構造・アルゴリズムを特定のテーマに絞って練習できます。
この記事が役立ちそうな方
- LeetCodeを始めたての方
- 自力で解答できる問題を増やしたい方
- テーマごとに集中して取り組みたい方
LeetCodeの問題の分類
基本
文字列
配列
- 151. Reverse Words in a String
- 122. Best Time to Buy and Sell Stock II
- 55. Jump Game
- 45. Jump Game II
- 134. Gas Station
for
ビット操作
データ構造
配列:array
- 350. Intersection of Two Arrays II
- 1588. Sum of All Odd Length Subarrays※部分配列
- 283. Move Zeroes ※配列内の要素の入れ替え
- 1672. Richest Customer Wealth ※二重配列
- 1572. Matrix Diagonal Sum ※多重配列、インデックス操作
- 1207. Unique Number of Occurrences
辞書
連結リスト:linked list
- 21. Merge Two Sorted Lists ※連結リストの結合
- 876. Middle of the Linked List ※連結リスト+2ポインタ
- 206. Reverse Linked List ※連結リストの反転
- 142. Linked List Cycle II ※循環リストの判定+2ポインタ
キュー:queue
スタック:stack
ヒープキュー(優先度付きキュー):heap queue
木:Tree
- 589. N-ary Tree Preorder Traversal
- 102. Binary Tree Level Order Traversal ※二分木+幅優先探索(先巡:pre order)
- 98. Validate Binary Search Tree ※二分探索木
二分探索木
グラフ
アルゴリズム
再帰
- 589. N-ary Tree Preorder Traversal
- 617. Merge Two Binary Trees ※根ノードから木を構築
- 1448. Count Good Nodes in Binary Tree
two pointer
- 876. Middle of the Linked List ※連結リスト+2ポインタ
- 142. Linked List Cycle II ※循環リストの判定+2ポインタ
- 121. Best Time to Buy and Sell Stock
- 977. Squares of a Sorted Array ※昇順ソート済みリストとの組み合わせ
- 167. Two Sum II – Input Array Is Sorted ※二分探索とどこか似ている
- 392. Is Subsequence
スライディングウインドウ
区間
累積和
二分探索
幅優先探索(Breadth First Search, BFS)
- 102. Binary Tree Level Order Traversal ※二分木+幅優先探索(先巡:pre order)
- 872. Leaf-Similar Trees
- 700. Search in a Binary Search Tree
深さ優先探索(Depth First Search, DFS)
とにかく簡単な問題から解きたいなら
- 1768. Merge Strings Alternately
- 1431. Kids With the Greatest Number of Candies ※max、for、if、リスト
- 1732. Find the Highest Altitude ※for
終わりに
まとめ
がむしゃらに問題を解いていくのも良いのですが、自分の場合はテーマを決めて1,2週間は集中して取り組む方が、理解が速かったです。
特定のテーマにある程度慣れてからランダムに問題を解いていると、時々類題に当たりますが、以前と違って解答ができて成長を実感できます。
また、解答ができなくとも類題の存在を思い出して解答の方針を考えることくらいならば徐々にできるようになります。
疑問が解決した方はこちらへ
問題を解いていきましょう
LeetCodeに特有の内容などを記載しています。
Atcoderで言えば、標準入力を受ける手順などが該当します。
疑問が解決しない方はこちらへ
データ構造とアルゴリズムを始める前に、LeetCodeの使い方等についても知っておくと始めやすいです。
コメント