This repo contains everything needed to learn and master DSA from scratch in a beginner-friendly structure.
Each topic has theory as well as questions to practice, both in the same place.
There will also be Topic wise Leetcode questions linked to practice.
Disclaimer
I'm a B.tech Mech. graduate with an initial 3.5 years professional career in various Non-tech fields as a Mech R&D Design engg. followed by a SaaS Sales Person.
I truly understand the challenges faced by a non-CS background person to learn and understand the concepts of DSA and Software engg. in general.
Total transparency, I enrolled myself in the 1st Master's cohort of Scaler Neovarsity to learn Software engg., but I am also studying the topics from the internet as well.
So I'll be including all my learnings to give a very solid foundation which is easy to understand and retain.
- Absolute Basics to start coding in Java
- Basic Syntax
- Data Types, Variables and Operators
- Conditional Statements
- Loops
- Typecasting
- Time Complexity
- Space Complexity
- Maths topics required for DSA
- Concepts and Techniques required to solve DSA problems
- Bruteforce
- Bit Manipulation
- Recursion
- Backtracking
- Memoization (Top-Down DP)
- Tabulation (Bottom-Up DP)
- Greedy
- Divide and Conquer
- Data Structures
- Fundamental Data Structures
- 1D Arrays and Arraylists
- Basic Operations //To create, traverse, insert, delete, modify, search and sort an array.
- Special Techniques
- Prefix Sum and Suffix Sum
- Carry Forward
- Subarray Problems
- Subsequence Problems
- Sliding Window
- Two Pointer Technique
- Matrix (2D Arrays and Arraylists)
- Strings
- Linked List
- Stacks and Queues
- Stacks
- Queues
- 1D Arrays and Arraylists
- Advanced Data Structures
- Trees
- Fundamental Trees
- Binary Trees
- Ternary Trees
- N-ary Trees
- Tries
- Heaps
- Fundamental Trees
- Hashmaps
- Graphs
- Trees
- Fundamental Data Structures
- Algorithms
- Searching
- Linear Search
- Binary Search
- Two Pointer Technique
- Hashing
- Interpolation Search
- Sorting
- Selection Sort
- Bubble Sort
- Insertion Sort
- Merge Sort
- Quick Sort
- Heap Sort
- Counting Sort
- String Algorithms
- KMP Algorithm
- Boyer-Moore Algorithm
- Rabin-Karp Algorithm
- Z Algorithm
- Suffix Array
- Backtracking Algorithms
- N-Queens Problem
- Sudoku Solver
- Maze Solver (Rat in a Maze)
- Knight's Tour
- Graph Algorithms
- BFS
- DFS
- Dijkstra's Algorithm
- Bellman-Ford Algorithm
- Floyd-Warshall Algorithm
- Dynamic Programming
- Knapsack Problem
- Longest Common Subsequence
- Longest Increasing Subsequence
- Matrix Chain Multiplication
- Edit Distance
- Greedy Algorithms
- Activity Selection
- Huffman Coding
- Interval Scheduling
- Divide and Conquer
- Strassen's Matrix Multiplication
- Closest Pair of Points
- Convex Hull
- Karatsuba Algorithm
- Searching