Notes, code templates, and LeetCode problems, organized by topic. Each topic page has the concepts, links to code templates (C, Java, JavaScript, Python), and a table of practice problems.
| Topic | Covers |
|---|---|
| Arrays and Strings | Static/dynamic arrays, prefix sums, two pointers, sliding window, Kadane, intervals, greedy |
| Linked Lists | Singly/doubly linked lists, fast and slow pointers, in-place reversal |
| Stacks and Queues | Stack, queue, deque, monotonic stack |
| Hashing | Hash sets and maps, collisions, implementation |
| Sorting and Searching | Insertion, merge, quick, bucket sort, binary search |
| Recursion and Backtracking | Recursion basics, tree maze, subsets, combinations, permutations |
| Trees | Binary trees, BST, traversals, DFS/BFS, tries, segment trees, balanced trees |
| Heaps | Priority queues, push/pop, heapify, top-K, two heaps |
| Graphs | Representations, matrix/graph DFS and BFS, Dijkstra, MST, topological sort, union-find |
| Dynamic Programming | 1D/2D DP, knapsack, LCS, pattern catalogue |
| Bit Manipulation | Bitwise operators and tricks |
| Big-O and Interview | Complexity cheatsheet, flowchart, interview stages |
Also see problem-solving patterns for recognition signals across topics, and the CMU lectures.