はじめに
今回は、LeetCodeやコーディング面接対策で頻出の約90問を、カテゴリー別に整理したロードマップとしてご紹介します。問題の解き方は一つではありませんが、ジャンルを分けて段階的に取り組むことで、効率よくアルゴリズム力を高められます。
ポイント:
• 「Easy → Medium → Hard」の順でスキルアップ。
• 似た問題をまとめて復習する。
• カテゴリを意識して広く学習。
以下、各カテゴリごとにリストアップしていきます。
1. 配列とリスト操作 (Array / List)
配列・リストの基礎操作はアルゴリズムの入り口。頻出テクニック(スライディングウィンドウ、2ポインター)に慣れましょう。
1. 0001. Two Sum
2. 0121. Best Time to Buy and Sell Stock
3. 0283. Move Zeroes
4. 0026. Remove Duplicates from Sorted Array
5. 0053. Maximum Subarray
6. 0189. Rotate Array
7. 0217. Contains Duplicate
8. 0136. Single Number
9. 0169. Majority Element
10. 0448. Find All Numbers Disappeared in an Array
11. 0560. Subarray Sum Equals K
12. 0713. Subarray Product Less Than K
13. 0209. Minimum Size Subarray Sum
14. 0238. Product of Array Except Self
2. 文字列操作 (String)
文字列処理はほぼすべての企業がコーディング面接で出すジャンル。パターン: アナグラム判定、文字列検索、数値変換、再帰生成など。
15. 0242. Valid Anagram
16. 0014. Longest Common Prefix
17. 0028. Find the Index of the First Occurrence in a String
18. 0038. Count and Say
19. 0067. Add Binary
20. 0013. Roman to Integer
21. 0125. Valid Palindrome
22. 0008. String to Integer (atoi)
23. 0043. Multiply Strings
24. 0385. Mini Parser
25. 0394. Decode String
3. スタックとキュー (Stack / Queue)
スタックとキューはデータ構造の基本。モノトニックスタックなど「テクニカル」な手法も出てきます。
26. 0020. Valid Parentheses
27. 0155. Min Stack
28. 0232. Implement Queue using Stacks
29. 0739. Daily Temperatures
30. 0496. Next Greater Element I
31. 0225. Implement Stack using Queues
32. 0844. Backspace String Compare
33. 0735. Asteroid Collision
4. ハッシュテーブル (Hash Table)
検索・挿入が平均O(1)のハッシュテーブルを使いこなしましょう。重複判定、グルーピング、マッピングなどが典型。
34. 0349. Intersection of Two Arrays
35. 0387. First Unique Character in a String
36. 0167. Two Sum II - Input Array Is Sorted
37. 0049. Group Anagrams
38. 0811. Subdomain Visit Count
39. 0447. Number of Boomerangs
40. 0383. Ransom Note
5. ソートと検索 (Sorting / Basic Searching)
最小限のソート・検索の基礎を確認。
配列マージ、基本検索などを押さえます。
41. 0088. Merge Sorted Array
42. 0167. Two Sum II - Input Array Is Sorted (再掲)
6. 二分探索 (Binary Search)
配列だけでなく、行列やローテーションされた配列の探索など応用が豊富。
43. 0704. Binary Search
44. 0153. Find Minimum in Rotated Sorted Array
45. 0658. Find K Closest Elements
46. 0240. Search a 2D Matrix II
7. ヒープ (Heap)
常に最小(または最大)を取り出す操作が多い。
K番目に大きい/小さい要素などで大活躍。
47. 0703. Kth Largest Element in a Stream
48. 0378. Kth Smallest Element in a Sorted Matrix
49. 0373. Find K Pairs with Smallest Sums
8. ツリー (Tree)
二分木の基本操作やDFS・BFSを思い出しながら、再帰やレベルオーダーを学ぶ。
50. 0104. Maximum Depth of Binary Tree
51. 0226. Invert Binary Tree
52. 0101. Symmetric Tree
53. 0112. Path Sum
54. 0100. Same Tree
9. リンクリスト (Linked List)
リストの基本操作と、ポインタ操作に慣れましょう。
55. 0206. Reverse Linked List
56. 0021. Merge Two Sorted Lists
57. 0019. Remove Nth Node From End of List
58. 0234. Palindrome Linked List
59. 0141. Linked List Cycle
10. 動的計画法 (Dynamic Programming)
配列から2次元DPまで幅広い。最初はステップ数やサブ配列の和に慣れると良いです。
60. 0070. Climbing Stairs
61. 0198. House Robber
62. 0121. Best Time to Buy and Sell Stock (再掲)
63. 0053. Maximum Subarray (再掲, Kadane)
64. 0746. Min Cost Climbing Stairs
65. 0072. Edit Distance
66. 1143. Longest Common Subsequence
67. 0300. Longest Increasing Subsequence
68. 0322. Coin Change
69. 0416. Partition Equal Subset Sum
70. 0132. Palindrome Partitioning II
71. 0639. Decode Ways II
72. 0309. Best Time to Buy and Sell Stock with Cooldown
11. グラフアルゴリズム (Graph)
DFS/BFSを理解し、サイクル判定・最短経路・トポロジカルソートなどを網羅。
73. 0207. Course Schedule
74. 0785. Is Graph Bipartite?
75. 0994. Rotting Oranges
76. 0133. Clone Graph
77. 0399. Evaluate Division
78. 1557. Minimum Number of Vertices to Reach All Nodes
79. 1971. Find if Path Exists in Graph
80. 0310. Minimum Height Trees
81. 0261. Graph Valid Tree
82. 1976. Number of Ways to Arrive at Destination
12. バックトラッキング (Backtracking)
すべての組合せ・順列を生成したり、DFSで全探索する問題。状態管理に慣れよう。
83. 0090. Subsets II
84. 0040. Combination Sum II
85. 0046. Permutations
86. 0079. Word Search
87. 0051. N-Queens
13. 高度なデータ構造 (Advanced Data Structures)
セグメントツリーやTrieなど、より複雑なデータ構造を使って問題を高速に解決。
88. 0208. Implement Trie (Prefix Tree)
89. 0211. Add and Search Word - Data Structure Design
90. 0239. Sliding Window Maximum
91. 0307. Range Sum Query - Mutable
92. 0128. Longest Consecutive Sequence
まとめ
このリストを活用すれば、基本的なデータ構造とアルゴリズムの典型問題を総ざらいできます。実際に手を動かしてコードを書くことで、理解が定着しやすいです。スキルアップの近道は、
1. 小さな例を紙に書いて実験
2. 他人のコードやディスカッションでアプローチを吸収
3. 定期的に復習する
という流れ。ぜひ挑戦してみてください!