- All topics will contain problems from LeetCode Easy to Hard, explained in an easy-to-understand manner.
- Complete custom implementation of all Data Structures and Algorithms.
- Complete Git & GitHub Course
- Introduction to Programming
- Flow of the program
- Introduction to Java
- First Java Program
- Functions
- Arrays
- Pattern questions
- Strings
- Maths for DSA
- Recursion
- Space and Time Complexity Analysis
- Introduction
- Comparisons of various cases
- Solving Linear Recurrence Relations
- Solving Divide and Conquer Recurrence Relations
- Big-O, Big-Omega, Big-Theta Notations
- Little Notations
- Get equation of any relation easily - best and easiest approach
- Complexity discussion of all the problems we do
- Space Complexity
- NP-Completeness Introduction
- Object Oriented Programming
- Introduction
- Classes & its instances
- this keyword in Java
- Properties
- Overloading & Overriding
- Static & Non-Static
- Packages
- Access Control
- Interfaces
- Abstract Classes
- Annotations
- Singleton Class
- final, finalize, finally
- Object Cloning
- Object Class
- Generics
- Exception Handling
- Collections Framework
- Vector Class
- Lambda Expression
- Enums
- Linked List
- Stacks & Queues
- Introduction
- Push efficient
- Pop efficient
- Circular Queue
- Queue using Stack and Vice versa
- Interview problems
- Trees
- Introduction
- Binary Trees
- Binary Search Trees
- DFS
- BFS
- AVL Trees
- Segment Tree
- Heaps
- Introduction
- Theory
- Priority Queue
- Heapsort
- Two Heaps Method
- k-way merge
- Top k elements
- Interval problems
- HashMap
- Introduction
- Theory - how it works
- Comparisons of various forms
- Limitations and how to solve
- Map using LinkedList
- Map using Hash
- Count Sort
- Radix Sort
- Chaining
- Probing
- Huffman-Encoder
- Subarray Questions: Sliding window, Two Pointer, Kadane's Algorithm
- Graphs
- Introduction
- BFS
- DFS
- Working with graph components
- Minimum Spanning Trees
- Kruskal Algorithm
- Prims Algorithm
- Dijkstra’s shortest path algorithm
- Topological Sort
- Bellman ford
- A* pathfinding Algorithm
- Dynamic Programming
- Introduction
- Recursion + Recursion DP + Iteration + Iteration Space Optimized
- Complexity Analysis
- 0/1 Knapsack
- Subset Questions
- Unbounded Knapsack
- Subsequence questions
- String DP
- Greedy Algorithms
- Tries
-
Fast IO
-
File handling
-
Bitwise + DP
-
Extended Euclidean algorithm
-
Modulo Multiplicative Inverse
-
Linear Diophantine Equations
-
Matrix Exponentiation
-
Mathematical Expectation
-
Catalan Numbers
-
Fermat’s Theorem
-
Wilson's Theorem
-
Euler's Theorem
-
Lucas Theorem
-
Chinese Remainder Theorem
-
Euler Totient
-
NP-Completeness
-
Multithreading
-
Fenwick Tree / Binary Indexed Tree
-
Square Root Decomposition
# Progress Tracker
- Complete Git & GitHub Course
- Introduction to Programming
-
- Types of languages
-
- Memory management
-
- Flow of the program
-
- Flowcharts
-
- Pseudocode
-
- Introduction to Java
-
- Introduction
-
- How it works
-
- Setup Installation
-
- Input and Output in Java
-
- Conditionals & Loops in Java
-
- if else
-
- loops
-
- Switch statements
-
- Data types
-
- Coding best practices
-
- Functions
-
- Introduction
-
- Scoping in Java
-
- Shadowing
-
- Variable Length Arguments
-
- Overloading
-
- Arrays
-
- Introduction
-
- Memory management
-
- Input and Output
-
- ArrayList Introduction
-
- Sorting
-
- Insertion Sort
-
- Selection Sort
-
- Bubble Sort
-
- Cyclic Sort (Merge sort etc after recursion)
- Searching
-
- Linear Search
-
- Binary Search
-
- Modified Binary Search
-
- Binary Search Interview questions
-
- Binary Search on 2D Arrays
-
-
- Pattern questions
- Strings
- Introduction
- How Strings work
- Comparison of methods
- Operations in Strings
- StringBuilder in java
- Maths for DSA
-
- Introduction
-
- Complete Bitwise Operators
-
- Prime numbers
-
- HCF / LCM
-
- Sieve of Eratosthenes
-
- Newton's Square Root Method
-
- Number Theory
-
- Euclidean algorithm
-
- Space and Time Complexity Analysis
-
- Introduction
-
- Comparion of various cases
-
- Solving Linear Recurrence Relations
-
- Solving Divide and Conquer Recurrence Relations
-
- Big-O, Big-Omega, Big-Theta Notations
-
- Get equation of any relation easily - best and easiest approach
-
- Complexity discussion of all the problems we do
-
- Space Complexity
-
- Memory Allocation of various languages
-
- NP Completeness and Hardness
-
- Recursion
-
- Introduction
-
- Why recursion?
-
- Flow of recursive programs - stacks
-
- Convert recursion to iteration
-
- Tree building of function calls
-
- Tail recursion
-
- Sorting:
-
- Merge Sort
-
- Quick Sort
-
- Sorting:
-
- Backtracking
-
- Sudoku Solver
-
- N-Queens
-
- N-Knights
-
- Maze problems
-
- Backtracking
-
- Recursion String Problems
-
- Recursion Array Problems
-
- Recursion Pattern Problems
-
- Subset Questions
-
- Recursion - Permutations, Dice Throws etc Questions
-
- Object Oriented Programming
-
- Introduction
-
- Classes & its instances
-
- this keyword in Java
-
- Properties
-
- Inheritance
-
- Abstraction
-
- Polymorphism
-
- Encapsulation
-
- Properties
-
- Overloading & Overriding
-
- Static & Non-Static
-
- Access Control
-
- Interfaces
-
- Abstract Classes
-
- Singleton Class
-
- final, finalize, finally
-
- Exception Handling
-
- Linked List
-
- Introduction
-
- Singly and Doubly Linked List
-
- Circular Linked List
-
- Fast and slow pointer
-
- Cycle Detection
-
- Reversing of LinekdList
-
- Linked List Interview questions
-
- Stacks & Queues
-
- Introduction
-
- Interview problems
-
- Push efficient
-
- Pop efficient
-
- Queue using Stack and Vice versa
-
- Circular Queue
-
- Dynamic Programming
-
- Introduction
-
- Recursion + Recursion DP + Iteration + Iteration Space Optimized
-
- Complexity Analysis
-
- 0/1 Knapsack
-
- Subset Questions
-
- Unbounded Knapsack
-
- Subseq questions
-
- String DP
-
- Trees
-
- Introduction
-
- Binary Trees
-
- Binary Search Trees
-
- DFS
-
- BFS
-
- AVL Trees
-
- Segment Tree
-
- Fenwick Tree / Binary Indexed Tree
-
- Heaps
-
- Introduction
-
- Theory
-
- Priority Queue
-
- Two Heaps Method
-
- k-way merge
-
- top k elements
-
- interval problems
-
- Hashmaps
-
- Introduction
-
- Theory - how it works
-
- Comparisons of various forms
-
- Limitations and how to solve
-
- Map using LinkedList
-
- Map using Hash
-
- Chaining
-
- Probing
-
- Huffman-Encoder
-
- Tries
- Graphs
-
- Introduction
-
- BFS
-
- DFS
-
- Working with graph components
-
- Minimum Spanning Trees
-
- Kruskal Algorithm
-
- Prims Algorithm
-
- Dijkstra’s shortest path algorithm
-
- Topological Sort
-
- Bellman ford
-
- A* pathfinding Algorithm
-
- Greedy Algorithms
- Fast IO
- File handling
- Bitwise + DP
- Extended Euclidean algorithm
- Modulo Multiplicative Inverse
- Linear Diophantine Equations
- Matrix Exponentiation
- Mathematical Expectation
- Catalan Numbers
- Fermat’s Theorem
- Wilson's Theorem
- Euler's Theorem
- Lucas Theorem
- Chinese Remainder Theorem
- Euler Totient
- NP-Completeness
- Multithreading
- Fenwick Tree / Binary Indexed Tree
- Square Root Decomposition