Skip to content

sujitKrS04/Complete-DSA-In-Java

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

25 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🚀 Complete Data Structures & Algorithms in Java

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.

📚 Learning Sources

This repository is based on the excellent courses by:

📁 Repository Structure

🎯 Kunal Kushwaha Section

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

🎯 Striver Section

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

📖 Learning Resources

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

🗂️ Navigation

📦 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)

🚀 Getting Started

  1. Clone the repository:

    git clone https://github.com/yourusername/dsa-java-complete.git
    cd dsa-java-complete
  2. Navigate to specific topics:

    cd Kunal-Kushwaha/Arrays
    # or
    cd Striver/Dynamic-Programming
  3. Read the notes:

    • Check Notes/notes.md in each topic folder for concept explanations
    • Review code comments for implementation details
  4. Practice:

    • Start with basic implementations
    • Solve assignment problems
    • Challenge yourself with extra questions

🎯 Learning Path Recommendation

For Beginners:

  1. Start with Kunal Kushwaha section (Java Basics → Arrays → Recursion)
  2. Focus on understanding concepts through notes
  3. Practice assignments thoroughly

For Intermediate/Advanced:

  1. Complete Kunal's advanced topics (OOP, Trees, Graphs)
  2. Move to Striver section for competitive programming concepts
  3. Focus on optimization and complex problem-solving

🤝 Contributing

Feel free to contribute by:

  • Adding more practice problems
  • Improving existing solutions
  • Enhancing documentation
  • Fixing bugs or optimizing code

📞 Connect & Support

⭐ Show Your Support

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!

About

DSA Practice with Kunal Kushwa resources

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • Java 100.0%