Section 4 of 9
DSA Curriculum: Beginner → Advanced
Data structures & algorithms path with famous problems and verified free YouTube resources.
Progression assumes you can already code (you can — TypeScript/JavaScript counts; most resources below use Python/Java/C++ but NeetCode has JS/TS solutions). Recommended pace: Beginner 4–6 weeks, Intermediate 8–10 weeks, Advanced 6–8 weeks at ~1.5 hrs/day.
BEGINNER
| Topic | One-line explanation | Practice problems (platform) | Free YouTube resources |
|---|---|---|---|
| Big-O / Complexity Analysis | Measuring how runtime/memory scales with input size. | ”Two Sum” (LeetCode 1) — compare O(n²) vs O(n) solutions; “Contains Duplicate” (LeetCode 217) | NeetCode — “Big O Notation - Full Course” segments inside playlists; Abdul Bari — “1.5 Time Complexity” (Algorithms playlist) |
| Arrays & Strings | Contiguous data; the substrate of most interview problems. | ”Best Time to Buy and Sell Stock” (LeetCode 121); “Product of Array Except Self” (LeetCode 238); “Valid Anagram” (LeetCode 242) | NeetCode — “Arrays & Hashing” section of NeetCode 150 playlist; Striver (takeUforward) — A2Z DSA Course, Arrays playlist |
| Hash Maps / Sets | O(1) average lookup by key; trade memory for speed. | ”Group Anagrams” (LeetCode 49); “Longest Consecutive Sequence” (LeetCode 128) | NeetCode — “Group Anagrams” and hashing videos in NeetCode 150; freeCodeCamp — “Data Structures Easy to Advanced Course” (William Fiset, hash table section) |
| Two Pointers | Two indices moving through data to avoid nested loops. | ”Valid Palindrome” (LeetCode 125); “Container With Most Water” (LeetCode 11); “3Sum” (LeetCode 15) | NeetCode — Two Pointers section, NeetCode 150; Striver — Two Pointer playlist (takeUforward) |
| Sliding Window | Maintain a moving subrange; turns O(n²) substring problems into O(n). | ”Longest Substring Without Repeating Characters” (LeetCode 3); “Minimum Window Substring” (LeetCode 76) | NeetCode — “Sliding Window: Best Time to Buy/Sell Stock” and window section of NeetCode 150 |
| Stacks & Queues | LIFO/FIFO structures; parsing, undo, BFS foundations. | ”Valid Parentheses” (LeetCode 20); “Min Stack” (LeetCode 155); “Daily Temperatures” (LeetCode 739) | NeetCode — Stack section, NeetCode 150; Abdul Bari — stack/queue lectures in Algorithms playlist |
| Binary Search | Halve the search space each step on sorted/monotonic data. | ”Binary Search” (LeetCode 704); “Search in Rotated Sorted Array” (LeetCode 33); “Koko Eating Bananas” (LeetCode 875) | NeetCode — Binary Search section; Striver — “Binary Search Playlist |
| Linked Lists | Nodes chained by pointers; insertion cheap, random access expensive. | ”Reverse Linked List” (LeetCode 206); “Merge Two Sorted Lists” (LeetCode 21); “Linked List Cycle” (LeetCode 141) | NeetCode — Linked List section; freeCodeCamp — William Fiset data structures course (linked list section) |
| Recursion basics | Function calling itself on smaller subproblems; base case + recursive case. | ”Climbing Stairs” (LeetCode 70) recursively; “Pow(x, n)” (LeetCode 50) | Abdul Bari — “How to write Recursive Functions” + recursion series (Algorithms playlist); Striver — Recursion playlist |
INTERMEDIATE
| Topic | One-line explanation | Practice problems (platform) | Free YouTube resources |
|---|---|---|---|
| Trees & BSTs | Hierarchical nodes; BST keeps sorted order for O(log n) ops. | ”Invert Binary Tree” (LeetCode 226); “Validate Binary Search Tree” (LeetCode 98); “Binary Tree Level Order Traversal” (LeetCode 102) | NeetCode — Trees section, NeetCode 150; Striver — Binary Trees playlist (takeUforward) |
| Heaps / Priority Queues | Always pop the min/max in O(log n); top-K and scheduling problems. | ”Kth Largest Element in an Array” (LeetCode 215); “Merge k Sorted Lists” (LeetCode 23); “Find Median from Data Stream” (LeetCode 295) | NeetCode — Heap/Priority Queue section; William Fiset — “Priority Queue” videos (data structures playlist) |
| Backtracking | Try a choice, recurse, undo — exhaustive search with pruning. | ”Subsets” (LeetCode 78); “Combination Sum” (LeetCode 39); “N-Queens” (LeetCode 51) | NeetCode — Backtracking section; Striver — Recursion & Backtracking playlist |
| Graphs: BFS/DFS | Networks of nodes/edges; BFS = shortest unweighted path, DFS = reachability/structure. | ”Number of Islands” (LeetCode 200); “Clone Graph” (LeetCode 133); “Rotting Oranges” (LeetCode 994) | William Fiset — “Graph Theory Algorithms” playlist / freeCodeCamp “Graph Algorithms for Technical Interviews”; Striver — Graph Series (takeUforward) |
| Topological Sort | Order tasks so every dependency comes first (DAGs only). | ”Course Schedule” (LeetCode 207); “Course Schedule II” (LeetCode 210); “Alien Dictionary” (LeetCode 269, premium) | William Fiset — “Topological Sort” (Graph Theory playlist); NeetCode — “Course Schedule” video |
| Tries | Prefix tree — char-by-char storage for autocomplete/dictionary problems. | ”Implement Trie” (LeetCode 208); “Word Search II” (LeetCode 212) | NeetCode — Tries section, NeetCode 150 |
| Intervals | Sort by start, then merge/scan — meetings, ranges, bookings. | ”Merge Intervals” (LeetCode 56); “Insert Interval” (LeetCode 57); “Non-overlapping Intervals” (LeetCode 435) | NeetCode — Intervals section, NeetCode 150 |
| Greedy | Take the locally best choice; works when local optimum ⇒ global optimum. | ”Jump Game” (LeetCode 55); “Gas Station” (LeetCode 134); “Task Scheduler” (LeetCode 621) | NeetCode — Greedy section; Abdul Bari — Greedy method lectures (Algorithms playlist) |
| 1-D Dynamic Programming | Cache overlapping subproblem answers; recursion + memo table. | ”House Robber” (LeetCode 198); “Coin Change” (LeetCode 322); “Longest Increasing Subsequence” (LeetCode 300) | NeetCode — 1-D DP section; Striver — DP Series (“Dynamic Programming Playlist,” takeUforward); freeCodeCamp — “Dynamic Programming - Learn to Solve Algorithmic Problems” |
ADVANCED
| Topic | One-line explanation | Practice problems (platform) | Free YouTube resources |
|---|---|---|---|
| 2-D / Multidim DP | DP over grids or two sequences (edit distance, LCS family). | ”Longest Common Subsequence” (LeetCode 1143); “Edit Distance” (LeetCode 72); “Burst Balloons” (LeetCode 312) | NeetCode — 2-D DP section; Striver — DP on Strings/Grids (DP Series) |
| Shortest Paths (Dijkstra, Bellman-Ford) | Weighted-graph shortest paths; Dijkstra = no negative edges, Bellman-Ford handles them. | ”Network Delay Time” (LeetCode 743); “Cheapest Flights Within K Stops” (LeetCode 787); “Path With Minimum Effort” (LeetCode 1631) | William Fiset — “Dijkstra’s Shortest Path Algorithm” (Graph Theory playlist); Abdul Bari — “Bellman-Ford” lecture |
| Union-Find (DSU) | Near-O(1) merge/find of disjoint sets; connectivity & cycle detection. | ”Redundant Connection” (LeetCode 684); “Accounts Merge” (LeetCode 721); “Number of Provinces” (LeetCode 547) | William Fiset — “Union Find” videos (data structures playlist); NeetCode — “Redundant Connection” |
| Minimum Spanning Tree (Kruskal/Prim) | Cheapest edge set connecting all nodes. | ”Min Cost to Connect All Points” (LeetCode 1584) | William Fiset — Kruskal/Prim videos (Graph Theory playlist); Abdul Bari — MST lectures |
| Bit Manipulation | Operate on numbers at the bit level; XOR tricks, masks. | ”Single Number” (LeetCode 136); “Counting Bits” (LeetCode 338); “Sum of Two Integers” (LeetCode 371) | NeetCode — Bit Manipulation section, NeetCode 150 |
| Monotonic Stack / Advanced Stack | Stack kept sorted to answer “next greater/smaller” in O(n). | ”Largest Rectangle in Histogram” (LeetCode 84); “Trapping Rain Water” (LeetCode 42) | NeetCode — “Largest Rectangle in Histogram”, “Trapping Rain Water” videos |
| Segment Trees / Fenwick (BIT) | Range queries + point updates in O(log n); competitive-programming staple. | ”Range Sum Query - Mutable” (LeetCode 307); “Count of Smaller Numbers After Self” (LeetCode 315) | William Fiset — Fenwick tree videos (data structures playlist); Striver — Segment Tree playlist [UNVERIFIED — check current playlist name] |
| String Algorithms (KMP, Rabin-Karp) | Linear-time pattern matching via prefix functions or rolling hashes. | ”Find the Index of the First Occurrence in a String” (LeetCode 28); “Shortest Palindrome” (LeetCode 214) | Abdul Bari — “KMP String Matching Algorithm”; Striver — String playlist |
| Advanced Graph (SCC, bridges) | Tarjan/Kosaraju find strongly connected components and critical edges. | ”Critical Connections in a Network” (LeetCode 1192) | William Fiset — “Tarjan’s Strongly Connected Components”, “Bridges and Articulation points” (Graph Theory playlist) |
Strategy notes
- Follow one structured list, not random problems: NeetCode 150 (free at neetcode.io) or Striver’s A2Z DSA Sheet (free at takeuforward.org). Both map 1:1 to their YouTube playlists.
- For an Angular/TS dev: solve in TypeScript/JavaScript on LeetCode — allowed in nearly all interviews; switching to Python for AI work can come later (Task 5).
- Target: ~150–200 curated problems total beats 500 random ones. Redo failed problems after 1 week (spaced repetition).
Think of DSA (Data Structures and Algorithms) as learning to organize and search a warehouse efficiently. A data structure is a way of arranging boxes (data) — on shelves, in stacks, in a sorted catalog. An algorithm is a step-by-step recipe for finding or rearranging those boxes fast.
Why it matters: tech interviews at most companies are essentially warehouse-efficiency puzzles. Even with AI writing code, companies test this because it shows you can reason about cost — will this approach take 1 second or 3 hours when the data gets huge?
The three levels, in warehouse terms:
- Beginner — Learn the basic storage types: a row of shelves (arrays), a labeled filing cabinet where you jump straight to the right folder (hash maps), a stack of trays where you only take the top one (stacks), and the trick of guessing a word in the dictionary by always opening to the middle (binary search).
- Intermediate — Learn branching structures: family trees (trees), city road maps (graphs — how apps like Google Maps think), “to-do lists with dependencies” (topological sort — you must wear socks before shoes), and the powerful trick of writing down answers to sub-puzzles so you never solve the same one twice (dynamic programming).
- Advanced — Specialist tools: finding the cheapest road network connecting cities (minimum spanning trees), instantly answering “what’s the total between shelf 40 and shelf 90” even while boxes keep changing (segment trees), and finding a phrase inside a giant book in one pass (string matching).
How to learn free: two teachers dominate YouTube — NeetCode (clear 15-minute explanations of famous interview puzzles, US-style) and Striver / takeUforward (a complete free A-to-Z course, very popular in India). Practice happens on LeetCode, a free website with thousands of these puzzles where your solution is auto-checked.
Realistic timeline: about 4–6 months at 1–1.5 hours a day to go from beginner to interview-ready. It’s a gym membership, not a weekend project — consistency beats intensity.
Diagrams
Interview question topic frequency (directional estimate)
Data table
| Category | Value |
|---|---|
| Arrays / Strings | 38% |
| Trees / Graphs | 28% |
| Dynamic Programming | 18% |
| Design / Other | 16% |
Sources
All resources confirmed to exist via live web search, July 2026.
- NeetCode 150 list + video map ✅ verified
- NeetCode YouTube channel ✅ verified
- Striver’s A2Z DSA Course/Sheet ✅ verified
- Striver’s A2Z DSA Course YouTube playlist ✅ verified
- Abdul Bari — Algorithms playlist (84 videos) ✅ verified
- William Fiset — Graph Theory playlist ✅ verified
- freeCodeCamp — Data Structures Easy to Advanced Course (William Fiset, 8 hr) ✅ verified
- freeCodeCamp NeetCode 150 course (38 hr) ✅ verified
- LeetCode problem set ✅ verified
✅ = existence verified via live search, July 2026. Individual video titles inside playlists may shift; playlist/channel links are the stable anchors.