Solve every problem in ten minutes, on the first try.
AlgoRung is where your DSA practice lives: a curriculum organised by pattern, a revision schedule for every problem you solve, and notes on every mistake you make along the way.
- Problems
- 231
- Topics
- 14
- Revisions per problem
- 2
subsets([1, 2]) two choices per element, four subsets One problem, three rungs
Solving a problem once proves you understood it that day. AlgoRung schedules two revisions after the first solve, so the pattern is still there in the interview.
-
Sat
Class
Learn the pattern from the session. Watch for the idea, not the code.
-
Sat–Sun
First solve
Code it yourself. When you get stuck, write down where before you look at a solution.
-
Tue
Revision 1
Solve it again from a blank editor. Log your time, attempts and every mistake.
-
Thu
Revision 2
One more clean run. Under ten minutes in one attempt and the problem is yours.
Class on Sunday instead? The schedule shifts with it: first solve Sun–Mon, revisions on Wed and Fri.
The curriculum
231 problems from LeetCode, GeeksforGeeks and NeetCode, grouped by the pattern each one teaches. Follow the roadmap from arrays to dynamic programming, or jump to the topic your next class covers.
-
Arrays & Hashing
28 problemsTwo Sum, Moore's Voting Algorithm, Kadane's Algorithm, Double Reversal Trick, Two Pointer, Right to Left Traversal, In-place Transformations, Merge Sort Like Approach, Dutch National Flag, Prefix Sum Strategy, Sliding Window · Fixed, Sliding Window · Variable, Sliding Window · Hash Map
-
Stack
7 problemsStack Basics
-
Monotonic Stack
4 problemsMonotonic Stack
-
Linked List
20 problemsDummy Node Pattern, Slow Fast Pointers, Front Back Pointer, Front Middle Back Pointer, Miscellaneous
-
Binary Search
25 problemsBasics, Bisect, Unique 1-D Binary Search, Rotated Array, 2D Binary Search + Step Search, Search on Answer Range, Binary Search on Answer Space
-
Recursion & Backtracking
17 problemsBasic Recursion, 2D Matrix, Pick / Not-Pick, Permutations, 2D Matrix Backtracking
-
Trees & BST
43 problemsRecursion, Backtracking, Traversals, Views, BST Basics, Postorder + Multiple Return Values, LCA, Child + Ancestor Handling, Reverse Inorder Traversal, Tree Serialization / Deserialization, Tree to Lists and vice-versa, Miscellaneous BST Questions
-
Heaps
6 problemsTop K / Kth Largest / Smallest, Composite comparator, Merge K Sorted, Advanced
-
Intervals
9 problemsBasics, Line Sweep
-
Tries
2 problemsBasics
-
Graphs
18 problemsBFS / DFS Basics, Matrix Graphs, Connected Components, BFS for shortest path, DFS - Complement Trick, Multi source BFS, Cycle Detection, Topological Sort, Dijkstra
-
Dynamic Programming
34 problems1D DP, Alternate Selection / Pick / Not pick, 2D DP, 2D DP - max/min of last row, Squares, State Machine DP - Stock Problems, Knapsack, Strings, Interval DP
-
Bit Manipulation
12 problemsBasics, Tricks to remember, XOR Basics, Missing / Repeated Numbers
-
Design Data Structures
6 problemsPre-processing + tradeoffs, Linked Lists, Stack
A method for every problem
The same eight steps, whether it's Two Sum or Burst Balloons. Talk before you type. Brute force before you optimise.
- Read the question twice.
- Run an example to check you understood it.
- List the edge cases.
- Find a brute force and test it on those edge cases.
- Explain the approach with its time and space complexity.
- Optimise, then test the edge cases again.
- Explain the optimised approach and its complexity.
- Code it.
Subsets II
Pick / Not-Pick, Recursion & Backtracking
Skipped duplicates at every depth instead of only among siblings.
// sort first, skip equal siblings only
for (int i = start; i < nums.length; i++) {
if (i > start && nums[i] == nums[i - 1]) continue;
path.add(nums[i]);
backtrack(nums, i + 1, path, out);
path.remove(path.size() - 1);
}