This course is made for people who want to learn DSA from ** A ** to ** Z ** for free in a well-organized and structured manner. The lecture quality is better than what you get in paid courses, the only thing we donâ€™t provide is doubt support, but trust me our YouTube video comments resolve that as well, we have a wonderful community of ** 250K+ ** people who engage in all of the videos.

#### Key Highlights:

- Teaches you problem solving by diving deep into DSA, with 450+ modules.
- In-depth video solutions covering brute, better, optimal solutions.
- Well structured articles/notes for quick revision.
- C++, Java, Python, and Javascript code.
- Company tags associated with each problem.
- Notes section to save your notes for quick revision.
- Used by over 1.5M+ people worldwide in the last 1 year.
- All the lectures are recorded in 4K.
- None of the paid/unpaid courses have these many modules.

- Software Engineer at
**Google**. - Offers from
**Facebook London**and other startups. - Previously worked with
**Amazon, Media.net**. - Followed by
**1M+**people across YT, Linkedin and other socials. - Candidate Master at Codeforces.
- 6* at Codechef.

If you still have doubts or questions, we’ve got you covered! Check out our FAQs section at the bottom of the page, where we address some common queries that might help clarify any concerns you have.

**Note:** No prior knowledge of programming is needed, you can start with this one.

**Note:** The Series doesn’t focus on any specific programming language. Instead, it emphasizes logic and uses pseudocode. The first two basic videos might use C++, but for Java tutorials, you can watch other YouTube videos. When tackling core problems of data structures and algorithms (DSA), the Series uses pseudocode that isn’t tied to any particular programming language. However, you can find code examples in your preferred language in the notes and articles provided.

**Step 1**: Learn the basics

**Step 1.1**: Things to Know in C++/Java/Python or any language

**Step 1.3**: Learn STL/Java-Collections or similar thing in your language

Topic/Article |
Solution | |
---|---|---|

Java Collections or C++ STL |

**Step 1.4**: Know Basic Maths

Topic/Article | GfG | Solution | Leetcode | |
---|---|---|---|---|

Count Digits | ||||

Reverse a Number | ||||

Check Palindrome | ||||

GCD Or HCF | ||||

Armstrong Numbers | ||||

Print all Divisors | ||||

Check for Prime |

**Step 1.5**: Learn Basic Recursion

**Step 1.6**: Learn Basic Hashing

Topic/Article | GfG | Solution | Leetcode | |
---|---|---|---|---|

Hashing Theory | ||||

Counting frequencies of array elements | ||||

Find the highest/lowest frequency element |

**Step 2**: Learn Important Sorting Techniques

**Step 2.1**: Sorting-I

Topic/Article | GfG | Video | Leetcode | |
---|---|---|---|---|

Selection Sort | ||||

Bubble Sort | ||||

Insertion Sort |

**Step 2.2**: Sorting-II

Topic/Article | GfG | Video | Leetcode | |
---|---|---|---|---|

Merge Sort | ||||

Recursive Bubble Sort | ||||

Recursive Insertion Sort | ||||

Quick Sort |

**Step 3**: Solve Problems on Arrays [Easy -> Medium -> Hard]

**Step 3.1**: Easy

**Step 3.2**: Medium

**Step 3.3**: Hard

**Step 4**: Binary Search [1D, 2D Arrays, Search Space]

**Step 4.1**: Learning BS on 1D Arrays

Topic/Article | GfG | Solution | Leetcode | |
---|---|---|---|---|

Binary Search to find X in sorted array | ||||

Implement Lower Bound | ||||

Implement Upper Bound | ||||

Search Insert Position | ||||

Floor/Ceil in Sorted Array | ||||

Find the first or last occurrence of a given number in a sorted array | ||||

Count occurrences of a number in a sorted array with duplicates | ||||

Find peak element | ||||

Search in Rotated Sorted Array I | ||||

Search in Rotated Sorted Array II | ||||

Find minimum in Rotated Sorted Array | ||||

Find out how many times has an array been rotated | ||||

Single element in a Sorted Array |

**Step 4.2**: Applying BS on 2D Arrays

Topic/Article | GfG | Solution | Leetcode | |
---|---|---|---|---|

Find the row with maximum number of 1’s | ||||

Search in a 2 D matrix | ||||

Find Peak Element | ||||

Matrix Median |

**Step 4.3**: Find Answers by BS in Search Space

Topic/Article | GfG | Solution | Leetcode | |
---|---|---|---|---|

Find square root of a number in log n | ||||

Find the Nth root of a number using binary search | ||||

Koko Eating Bananas | ||||

Minimum days to make M bouquets | ||||

Find the smallest Divisor | ||||

Capacity to Ship Packages within D Days | ||||

Median of two sorted arrays | ||||

Aggressive Cows | ||||

Book Allocation Problem | ||||

Split array – Largest Sum | ||||

Kth Missing Positive Number | ||||

Minimize Max Distance to Gas Station | ||||

Median of 2 sorted arrays | ||||

Kth element of 2 sorted arrays |

**Step 5**: Strings [Basic and Medium]

- String has extremely hard problems for beginners in its hard section, so it is covered in the later half
- String has lesser problems, because most of the string problems have hard concepts like DP or others which are covered in different topics.

**Step 5.1**: Basic and Easy String Problems

Topic/Article | GfG | Solution | Leetcode | |
---|---|---|---|---|

Remove outermost Paranthesis | ||||

Reverse words in a given string / Palindrome Check | ||||

Largest odd number in a string | ||||

Longest Common Prefix | ||||

Isomorphic String | ||||

check whether one string is a rotation of another | ||||

Check if two strings are anagram of each other |

**Step 5.2**: Medium String Problems

**Step 6**: Learn LinkedList [Single/Double LL, Medium, Hard]

**Step 6.1**: Learn 1D LinkedList

Topic/Article | GfG | Solution | Leetcode | |
---|---|---|---|---|

Introduction to LinkedList, learn about struct, and how is node represented | ||||

Inserting a node in LinkedList | ||||

Deleting a node in LinkedList | ||||

Find the length of the linkedlist [learn traversal] | ||||

Search an element in the LL |

**Step 6.2**: Learn Doubly LinkedList

Topic/Article | GfG | Solution | Leetcode | |
---|---|---|---|---|

Introduction to DLL, learn about struct, and how is node represented | ||||

Insert a node in DLL | ||||

Delete a node in DLL | ||||

Reverse a DLL |

**Step 6.3**: Medium Problems of LL

Topic/Article | GfG | Solution | Leetcode | |
---|---|---|---|---|

Middle of a LinkedList [TortoiseHare Method] | ||||

Reverse a LinkedList [Iterative] | ||||

Reverse a LL [Recursive] | ||||

Detect a loop in LL | ||||

Find the starting point in LL | ||||

Length of Loop in LL | ||||

Check if LL is palindrome or not | ||||

Segrregate odd and even nodes in LL | ||||

Remove Nth node from the back of the LL | ||||

Delete the middle node of LL | ||||

Sort LL | ||||

Sort a LL of 0’s 1’s and 2’s by changing links | ||||

Find the intersection point of Y LL | ||||

Add 1 to a number represented by LL | ||||

Add 2 numbers in LL |

**Step 6.4**: Medium Problems of DLL

Topic/Article | GfG | Solution | Leetcode | |
---|---|---|---|---|

Delete all occurrences of a key in DLL | ||||

Find pairs with given sum in DLL | ||||

Remove duplicates from sorted DLL |

**Step 6.5**: Hard Problems of LL

Topic/Article | GfG | Solution | Leetcode | |
---|---|---|---|---|

Reverse LL in group of given size K | ||||

Rotate a LL | ||||

Flattening of LL | ||||

Clone a Linked List with random and next pointer |

**Step 7**: Recursion [PatternWise]

- Please complete the basic recursion questions in Step 1
- To learn completely recursion, watch this playlist -> Link

**Step 7.1**: Get a Strong Hold

Topic/Article | GfG | Solution | Leetcode | |
---|---|---|---|---|

Recursive Implementation of atoi() | ||||

Pow(x, n) | ||||

Count Good numbers | ||||

Sort a stack using recursion | ||||

Reverse a stack using recursion |

**Step 7.2**: Subsequences Pattern

Topic/Article | GfG | Solution | Leetcode | |
---|---|---|---|---|

Generate all binary strings | ||||

Generate Paranthesis | ||||

Print all subsequences/Power Set | ||||

Learn All Patterns of Subsequences (Theory) | ||||

Count all subsequences with sum K | ||||

Check if there exists a subsequence with sum K | ||||

Combination Sum | ||||

Combination Sum-II | ||||

Subset Sum-I | ||||

Subset Sum-II | ||||

Combination Sum – III | ||||

Letter Combinations of a Phone number |

**Step 7.3**: Trying out all Combos / Hard

Topic/Article | GfG | Solution | Leetcode | |
---|---|---|---|---|

Palindrome Partitioning | ||||

Word Search | ||||

N Queen | ||||

Rat in a Maze | ||||

Word Break | ||||

M Coloring Problem | ||||

Sudoko Solver | ||||

Expression Add Operators |

**Step 8**: Bit Manipulation [Concepts & Problems] & Advanced Maths

- It is one of the smallest topics in DSA, learn the basic concepts.
- There are only few problems which are repeatedly asked in Interviews which have been added.

**Step 8.1**: Learn Bit Manipulation

**Step 9**: Stack and Queues [Pre-In-Post-fix, Monotonic Stack]

**Step 9.1**: Learning

**Step 9.2**: Prefix, Infix, PostFix Conversion Problems

Topic/Article | GfG | Solution | Leetcode | |
---|---|---|---|---|

Infix to Postfix Conversion using Stack | ||||

Prefix to Infix Conversion | ||||

Prefix to Postfix Conversion | ||||

Postfix to Prefix Conversion | ||||

Postfix to Infix | ||||

Convert Infix To Prefix Notation |

**Step 9.3**: Monotonic Stack/Queue Problems [VVV. Imp]

Topic/Article | GfG | Solution | Leetcode | |
---|---|---|---|---|

Next Greater Element | ||||

Next Greater Element 2 | ||||

Next Smaller Element | ||||

Number of NGEs to the right | ||||

Trapping Rainwater | ||||

Sum of subarray minimum | ||||

Stock span problem | ||||

Asteroid Collision | ||||

Sum of subarray ranges | ||||

Remove k Digits | ||||

Largest rectangle in a histogram | ||||

Maximal Rectangles |

**Step 9.4**: Implementation Problems

Topic/Article | GfG | Solution | Leetcode | |
---|---|---|---|---|

Sliding Window maximum | ||||

Stock Span Problem | ||||

The Celebrity Problem | ||||

Rotten Oranges | ||||

LRU cache (IMPORTANT) | ||||

LFU cache |

**Step 10**: Sliding Window & Two Pointer Combined Problems

**Step 10.1**: Medium Problems

Topic/Article | GfG | Solution | Leetcode | |
---|---|---|---|---|

Longest Substring Without Repeating Characters | ||||

Max Consecutive Ones III | ||||

Fruit Into Baskets | ||||

longest repeating character replacement | ||||

Binary subarray with sum | ||||

Count number of nice subarrays | ||||

Number of substring containing all three characters | ||||

Maximum point you can obtain from cards |

**Step 10.2**: Hard Problems

Topic/Article | GfG | Solution | Leetcode | |
---|---|---|---|---|

Longest Substring with At Most K Distinct Characters | ||||

Subarray with k different integers | ||||

Minimum Window Substring | ||||

Minimum Window Subsequence | Problem 2 |

**Step 11**: Heaps [Learning, Medium, Hard Problems]

**Step 11.1**: Learning

Topic/Article | GfG | Solution | Leetcode | |
---|---|---|---|---|

Introduction to Priority Queues using Binary Heaps | ||||

Min Heap and Max Heap Implementation | ||||

Check if an array represents a min-heap or not | ||||

Convert min Heap to max Heap |

**Step 11.2**: Medium Problems

Topic/Article | GfG | Solution | Leetcode | |
---|---|---|---|---|

Kth largest element in an array [use priority queue] | ||||

Kth smallest element in an array [use priority queue] | ||||

Sort K sorted array | ||||

Merge M sorted Lists | ||||

Replace each array element by its corresponding rank | ||||

Task Scheduler | ||||

Hands of Straights |

**Step 12**: Greedy Algorithms [Easy, Medium/Hard]

**Step 12.1**: Easy Problems

Topic/Article | GfG | Solution | Leetcode | |
---|---|---|---|---|

Assign Cookies | ||||

Fractional Knapsack Problem | ||||

Greedy algorithm to find minimum number of coins | ||||

Lemonade Change | ||||

Valid Paranthesis Checker |

**Step 12.2**: Medium/Hard

Topic/Article | GfG | Solution | Leetcode | |
---|---|---|---|---|

N meetings in one room | ||||

Jump Game | ||||

Jump Game 2 | ||||

Minimum number of platforms required for a railway | ||||

Job sequencing Problem | ||||

Candy | ||||

Program for Shortest Job First (or SJF) CPU Scheduling | ||||

Program for Least Recently Used (LRU) Page Replacement Algorithm | ||||

Insert Interval | ||||

Merge Intervals | ||||

Non-overlapping Intervals |

**Step 13**: Binary Trees [Traversals, Medium and Hard Problems]

- An entire playlist is made on it, it is more than enough

**Step 13.1**: Traversals

**Step 13.2**: Medium Problems

**Step 13.1**: Hard Problems

Topic/Article | GfG | Solution | Leetcode | |
---|---|---|---|---|

Root to Node Path in Binary Tree | ||||

LCA in Binary Tree | ||||

Maximum width of a Binary Tree | ||||

Check for Children Sum Property | ||||

Print all the Nodes at a distance of K in a Binary Tree | ||||

Minimum time taken to BURN the Binary Tree from a Node | ||||

Count total Nodes in a COMPLETE Binary Tree | ||||

Requirements needed to construct a Unique Binary Tree | Theory | Link | |||

Construct Binary Tree from inorder and preorder | ||||

Construct the Binary Tree from Postorder and Inorder Traversal | ||||

Serialize and deserialize Binary Tree | ||||

Morris Preorder Traversal of a Binary Tree | ||||

Morris Inorder Traversal of a Binary Tree | ||||

Flatten Binary Tree to LinkedList |

**Step 14**: Binary Search Trees [Concept and Problems]

- An entire playlist is made on it, it is more than enough

**Step 14.1**: Concepts

Topic/Article | GfG | Solution | Leetcode | |
---|---|---|---|---|

Introduction to Binary Search Tree | ||||

Search in a Binary Search Tree | ||||

Find Min/Max in BST |

**Step 14.2**: Practice Problems

Topic/Article | GfG | Solution | Leetcode | |
---|---|---|---|---|

Ceil in a Binary Search Tree | ||||

Floor in a Binary Search Tree | ||||

Insert a given Node in Binary Search Tree | ||||

Delete a Node in Binary Search Tree | ||||

Find K-th smallest/largest element in BST | ||||

Check if a tree is a BST or BT | ||||

LCA in Binary Search Tree | ||||

Construct a BST from a preorder traversal | ||||

Inorder Successor/Predecessor in BST | ||||

Merge 2 BST’s | ||||

Two Sum In BST | Check if there exists a pair with Sum K | ||||

Recover BST | Correct BST with two nodes swapped | ||||

Largest BST in Binary Tree |

**Step 15**: Graphs [Concepts & Problems]

- The new Graph playlist is under progress, you can check here -> Link
- In case you have lesser time, you can check the old graph series here -> Link

**Step 15.1**: Learning

Topic/Article | GfG | Solution | Leetcode | |
---|---|---|---|---|

Graph and Types | ||||

Graph Representation | C++ | ||||

Graph Representation | Java | ||||

Connected Components | Logic Explanation | ||||

BFS | ||||

DFS |

**Step 15.2**: Problems on BFS/DFS

Topic/Article | GfG | Solution | Leetcode | |
---|---|---|---|---|

Number of provinces (leetcode) | ||||

Connected Components Problem in Matrix | ||||

Rotten Oranges | ||||

Flood fill | ||||

Cycle Detection in unirected Graph (bfs) | ||||

Cycle Detection in undirected Graph (dfs) | ||||

0/1 Matrix (Bfs Problem) | ||||

Surrounded Regions (dfs) | ||||

Number of Enclaves [flood fill implementation – multisource] | ||||

Word ladder – 1 | ||||

Word ladder – 2 | ||||

Number of Distinct Islands [dfs multisource] | ||||

Bipartite Graph (DFS) | ||||

Cycle Detection in Directed Graph (DFS) |

**Step 15.3**: Topo Sort and Problems

Topic/Article | GfG | Solution | Leetcode | |
---|---|---|---|---|

Topo Sort | ||||

Kahn’s Algorithm | ||||

Cycle Detection in Directed Graph (BFS) | ||||

Course Schedule – I | ||||

Course Schedule – II | ||||

Find eventual safe states | ||||

Alien dictionary |

**Step 15.4**: Shortest Path Algorithms and Problems

**Step 15.5**: MinimumSpanningTree/Disjoint Set and Problems

Topic/Article | GfG | Solution | Leetcode | |
---|---|---|---|---|

Minimum Spanning Tree | ||||

Prim’s Algorithm | ||||

Disjoint Set [Union by Rank] | ||||

Disjoint Set [Union by Size] | ||||

Kruskal’s Algorithm | ||||

Number of operations to make network connected | ||||

Most stones removed with same rows or columns | ||||

Accounts merge | ||||

Number of island II | ||||

Making a Large Island | ||||

Swim in rising water | [HARD] |

**Step 15.6**: Other Algorithms

Topic/Article | GfG | Solution | Leetcode | |
---|---|---|---|---|

Bridges in Graph | ||||

Articulation Point | ||||

Kosaraju’s Algorithm |

**Step 16**: Dynamic Programming [Patterns and Problems]

- An entire playlist is made on it, it is more than enough

**Step 16.1**: Introduction to DP

Topic/Article | GfG | Solution | Leetcode | |
---|---|---|---|---|

Dynamic Programming Introduction |

**Step 16.2**: 1D DP

Topic/Article | GfG | Solution | Leetcode | |
---|---|---|---|---|

Climbing Stars | ||||

Frog Jump(DP-3) | ||||

Frog Jump with k distances(DP-4) | ||||

Maximum sum of non-adjacent elements (DP 5) | ||||

House Robber (DP 6) |

**Step 16.3**: 2D/3D DP and DP on Grids

**Step 16.4**: DP on Subsequences

**Step 16.5**: DP on Strings

**Step 16.6**: DP on Stocks

**Step 16.7**: DP on LIS

**Step 16.8**: MCM DP | Partition DP

**Step 16.9**: DP on Squares

Topic/Article | GfG | Solution | Leetcode | |
---|---|---|---|---|

Maximum Rectangle Area with all 1â€™s|(DP-55) | ||||

Count Square Submatrices with All Ones|(DP-56) |

**Step 17**: Tries [Concepts and Problems]

- Trie has limited problems, and usually they ask directly.
- An entire playlist is made on it, you don’t need anything out of what is given below.

**Step 17.1**: Theory

Topic/Article | GfG | Solution | Leetcode | |
---|---|---|---|---|

Implement TRIE | INSERT | SEARCH | STARTSWITH |

**Step 17.2**: Problems

Topic/Article | GfG | Solution | Leetcode | |
---|---|---|---|---|

Implement Trie â€“ 2 (Prefix Tree) | ||||

Longest String with All Prefixes | ||||

Number of Distinct Substrings in a String | ||||

Bit PreRequisites for TRIE Problems | ||||

Maximum XOR of two numbers in an array | ||||

Maximum XOR With an Element From Array |

**Step 18**: Strings [Hard Problems and Standard Algos]

- Basic, Medium, and other concepts on Strings have been covered above.
- In this we cover the algorithms, and applications which are generally asked, it is slightly tough to understand intuition wise, so don’t be much concerned.

**Step 18.1**: Hard Problems

**Step 19**: Request from Striver

If this Course/Sheet helped you in any possible way, you can always help me by doing any of the followings. It won’t cost you anything, eveything is free, but yes, I will be able to reach more and more people by word of mouth.

- You can tag me on Linkedin/Twitter/Instagram and give a shoutout for the content. In case you do so, please do use
**#StriversA2ZDSA**so that I can easily track them all down always. - You can share it on Whatsapp as well, by clicking here.
- When you start the Course/Sheet you can comment on the launch video, and when you end, you can comment your end date, experience, mistakes, so that the juniors of the next generation don’t repeat them ðŸ™‚
- If you are willing to pay or donate any money, feel free to donate to any of the nearby organisations, I will be super happy. We don’t need money as of now. By God’s grace we are happy and doing well.

Hurrah!! You are ready for your placement after some months of hard work! All the best, keep striving…

Striver

Share the course/sheet with your friends, created with love for takeUforward fam!

If you find any mistakes in the sheet, it can be a wrong link as well, please fill out the google form here, our team will check it on a weekly basis, thanks.