A problem count is a vanity metric unless it improves pattern recognition. This list organizes practice by reusable technique and records what should be learned from each problem.
Arrays and hashing
| Problem | Pattern | Review focus |
|---|---|---|
| Two Sum | Hash lookup | Time-space trade-off |
| Contains Duplicate | Set membership | Early exit |
| Valid Anagram | Frequency counting | Character domain |
| Group Anagrams | Canonical keys | Hashable representation |
| Top K Frequent Elements | Bucket/heap | Selecting top K |
Two pointers
| Problem | Review focus |
|---|---|
| Container With Most Water | Why moving the shorter wall is safe |
| 3Sum | Sorting, duplicate handling, pointer movement |
| Remove Duplicates from Sorted Array | Read/write pointers |
Sliding window
| Problem | Review focus |
|---|---|
| Longest Substring Without Repeating Characters | Maintaining a valid window |
| Minimum Window Substring | Required counts and contraction |
Binary search
| Problem | Review focus |
|---|---|
| Binary Search | Boundary invariant |
| Search in Rotated Sorted Array | Identifying the sorted half |
Linked lists
| Problem | Review focus |
|---|---|
| Reverse Linked List | Pointer ownership |
| Linked List Cycle | Fast and slow pointers |
| Merge Two Sorted Lists | Sentinel node |
SQL
| Problem | Review focus |
|---|---|
| Second Highest Salary | NULL and ranking |
| Employees Earning More Than Their Managers | Self join |
| Duplicate Emails | GROUP BY and HAVING |
| Customers Who Never Order | Anti-join |
Review protocol
For each problem, record:
- the invariant that makes the solution correct;
- time and space complexity;
- the mistake made on the first attempt;
- one nearby variation;
- the next review date.
Re-solve from a blank editor. Reading an accepted solution and nodding is not practice; it is algorithm-themed entertainment.