A comprehensive repository covering all essential Data Structures and Algorithms topics, implemented in Java. This repository follows the structured approach of two renowned instructors and includes detailed solutions, assignments, and notes for better understanding.
This repository is based on the excellent courses by:
- Kunal Kushwaha - Complete DSA Bootcamp
- Striver - Advanced DSA Concepts
Complete foundational DSA topics covering:
-
Git & GitHub Course - Version control fundamentals
-
Programming Fundamentals
- Introduction to Programming
- Types of Languages & Memory Management
- Program Flow (Flowcharts & Pseudocode)
-
Java Basics
- Introduction & Setup
- Input/Output Operations
- Data Types & Best Practices
- Conditionals & Loops (if-else, loops, switch statements)
-
Functions & Scope
- Function Implementation
- Scoping in Java
- Shadowing & Variable Length Arguments
- Method Overloading
-
Arrays & Searching
- Array Fundamentals & Memory Management
- ArrayList Implementation
- Searching Algorithms:
- Linear Search
- Binary Search & Modified Binary Search
- Binary Search on 2D Arrays
- Sorting Algorithms:
- Insertion Sort, Selection Sort, Bubble Sort
- Cyclic Sort, Count Sort, Radix Sort
-
Advanced Topics
- Pattern Programming Questions
- String Manipulation (StringBuilder, StringBuffer)
- Mathematical Concepts for DSA
- Bitwise Operators
- Prime Numbers & Sieve of Eratosthenes
- Number Theory & Euclidean Algorithm
- BigInteger & BigDecimal
-
Recursion & Backtracking
- Recursion Fundamentals & Stack Visualization
- Recursive Sorting (Merge Sort, Quick Sort)
- Backtracking Problems:
- N-Queens & N-Knights
- Sudoku Solver & Maze Problems
- Recursion with Strings, Arrays, and Patterns
- Subset Generation Problems
-
Complexity Analysis
- Time & Space Complexity
- Big-O, Big-Omega, Big-Theta Notations
- Recurrence Relations
- NP-Completeness Introduction
-
Object-Oriented Programming
- Classes, Objects & Inheritance
- Polymorphism, Abstraction & Encapsulation
- Interfaces, Abstract Classes & Annotations
- Exception Handling & Collections Framework
- Generics, Lambda Expressions & Enums
-
Data Structures Implementation
- Linked Lists: Singly, Doubly, Circular
- Stacks & Queues: Implementation & Interview Problems
- Trees: Binary Trees, BST, AVL Trees, Segment Trees
- Heaps: Priority Queues, Heapsort, k-way merge
- HashMap: Hash Tables, Collision Handling, String Matching
Advanced DSA concepts and problem-solving techniques:
-
Greedy Algorithms
- Greedy approach fundamentals
- Activity selection, fractional knapsack
- Job scheduling and optimization problems
-
Tries (Prefix Trees)
- Trie implementation and operations
- Word search and prefix matching
- Advanced trie applications
-
Two Pointer & Sliding Window
- Two pointer technique
- Sliding window problems
- Subarray and substring problems
-
Graph Algorithms
- Graph representation (Adjacency List/Matrix)
- BFS and DFS traversals
- Shortest path algorithms (Dijkstra, Floyd-Warshall)
- Minimum spanning tree (Kruskal, Prim)
- Topological sorting and cycle detection
-
Dynamic Programming
- DP fundamentals and memoization
- 1D and 2D DP problems
- Classic DP patterns (knapsack, LIS, LCS)
- Advanced DP techniques
Each topic includes:
- ✅ Complete implementations following video tutorials
- ✅ Assignment solutions with detailed explanations
- ✅ Extra practice problems for better understanding
- ✅ Notes.md files (
Notes/notes.md) under each topic for concept clarity - ✅ Time and space complexity analysis
📦 DSA-Java-Repository
├── 📁 Kunal-Kushwaha/
│ ├── 📁 Arrays/
│ │ ├── 📁 Notes/
│ │ │ └── notes.md
│ │ ├── LinearSearch.java
│ │ ├── BinarySearch.java
│ │ └── SortingAlgorithms.java
│ ├── 📁 Recursion/
│ ├── 📁 OOP/
│ └── ... (all topics)
└── 📁 Striver/
├── 📁 Greedy-Algorithms/
│ ├── 📁 Notes/
│ │ └── notes.md
│ └── GreedyProblems.java
├── 📁 Dynamic-Programming/
├── 📁 Graphs/
└── ... (all topics)
-
Clone the repository:
git clone https://github.com/yourusername/dsa-java-complete.git cd dsa-java-complete -
Navigate to specific topics:
cd Kunal-Kushwaha/Arrays # or cd Striver/Dynamic-Programming
-
Read the notes:
- Check
Notes/notes.mdin each topic folder for concept explanations - Review code comments for implementation details
- Check
-
Practice:
- Start with basic implementations
- Solve assignment problems
- Challenge yourself with extra questions
For Beginners:
- Start with Kunal Kushwaha section (Java Basics → Arrays → Recursion)
- Focus on understanding concepts through notes
- Practice assignments thoroughly
For Intermediate/Advanced:
- Complete Kunal's advanced topics (OOP, Trees, Graphs)
- Move to Striver section for competitive programming concepts
- Focus on optimization and complex problem-solving
Feel free to contribute by:
- Adding more practice problems
- Improving existing solutions
- Enhancing documentation
- Fixing bugs or optimizing code
- 🎥 Kunal Kushwaha: @KunalKushwaha
- 🎥 Striver: @takeUforward
If you find this repository helpful for your DSA journey, please consider giving it a star! ⭐
It helps others discover this resource and motivates continued development.
Happy Coding! 🎉
Master Data Structures & Algorithms one problem at a time!