Data Structures & Algorithms

The complete Striver A2Z path: arrays to graphs to dynamic programming, with 450+ problems.

Course Information

LevelCore — all branches
Duration16 weeks
Credits4
Pre-requisiteAny one language: C++, Java or Python.
MaterialOpen source — every module links to its original tutorial

About This Track

DSA decides most placement results, so this is the longest track in the program. It follows the takeUforward Striver A2Z DSA Course sheet in order, from complexity analysis all the way to dynamic programming and tries.

For every topic: read the concept on GeeksforGeeks or W3Schools, watch the takeUforward video for the intuition, then solve the listed problems on LeetCode. When you are stuck on a runtime error rather than the logic, search the algorithm tag on Stack Overflow.

What You Will Learn

Syllabus

Module wise plan. Every row links to the open tutorial we follow for that module.
#ModuleTopics CoveredWeeksStudy Material
1 Complexity & Basics Big-O, patterns, recursion, hashing, sorting algorithms 2 Striver A2Z Sheet
2 Arrays & Strings Two pointers, sliding window, prefix sum, Kadane, matrix problems 3 GfG Arrays
3 Searching & Linked List Binary search on answer, singly/doubly lists, cycle detection 2 W3Schools DSA
4 Stacks, Queues & Heaps Monotonic stack, next greater element, priority queue, top-K 2 GfG Stack
5 Trees & Graphs Traversals, BST, LCA, BFS/DFS, Dijkstra, topological sort, union-find, MST 4 Striver Graph Series
6 Dynamic Programming & Tries Memoisation, tabulation, knapsack, LIS, DP on grids and strings, tries 3 Striver DP Series

Code From The Lab

Sample from Module 3 — binary search on the answer

// Smallest divisor such that the sum of results is <= limit
int smallestDivisor(vector<int>& nums, int limit) {
    int low = 1, high = *max_element(nums.begin(), nums.end());

    while (low <= high) {
        int mid = low + (high - low) / 2;

        long long sum = 0;
        for (int n : nums) sum += (n + mid - 1) / mid;   // ceil(n/mid)

        if (sum <= limit) high = mid - 1;   // mid works, try smaller
        else              low  = mid + 1;   // mid too small
    }
    return low;                             // O(n log max) time, O(1) space
}

Video Lectures

Click the thumbnail to open the video playlist for this track:

Watch Data Structures & Algorithms video lectures

Recorded College Session

Video Playlists

Open Source Study Material

These are the exact open sources the notes for this track are prepared from.

SourceBest Used ForLink
takeUforward Striver A2Z sheet — the exact problem order this track follows Open
takeUforward SDE Sheet 191 problems most asked in product company interviews Open
GeeksforGeeks DSA tutorial, practice problems and company-wise archives Open
W3Schools DSA Simple animated introduction for first year students Open
LeetCode Where you actually solve the problems and track your streak Open
Stack Overflow The algorithm tag when your logic is right but the code is not Open
CP-Algorithms Open source reference for advanced competitive programming algorithms Open

Lab Projects

  1. Maintain a public GitHub repo of your A2Z sheet solutions
  2. Visualiser for sorting algorithms built with the Web Dev track skills
  3. Pathfinding demo showing BFS vs Dijkstra on a grid
  4. Weekly contest log: rating, mistakes and the pattern behind each miss

Your Progress

Modules finished in this track:

0 of 6

Self rated confidence: 0 of 6