A structured Data Structures & Algorithms repository built using Java, focused on mastering coding interviews through Pattern-Based Learning.
This repository documents my journey of learning DSA, solving problems systematically, understanding underlying patterns, and building strong problem-solving skills for Software Development Engineer (SDE) roles.
- Master Data Structures & Algorithms in Java
- Develop strong problem-solving skills
- Learn common coding interview patterns
- Write clean and optimized solutions
- Prepare for Software Engineering interviews
- Track progress throughout my DSA journey
Instead of only organizing problems by difficulty, this repository follows a Pattern-Based Learning approach.
Every problem is categorized by:
- Data Structure / Topic
- Problem-Solving Pattern
| Problem | Topic | Pattern |
|---|---|---|
| Two Sum II | Arrays | Two Pointers |
| Container With Most Water | Arrays | Two Pointers |
| Longest Substring Without Repeating Characters | Strings | Sliding Window |
| Linked List Cycle | Linked List | Fast & Slow Pointers |
| Reverse Linked List | Linked List | Reversal |
| Subarray Sum Equals K | Arrays | Prefix Sum |
This helps build pattern recognition, which is one of the most important skills in technical interviews.
src/
βββ a_Foundations
β
βββ b_Sorting
β
βββ c_Arrays
β βββ a_Traversal
β βββ b_TwoPointers
β βββ c_SlidingWindow
β βββ d_PrefixSum
β βββ e_KadaneAlgorithm
β βββ f_Matrix
β
βββ d_Strings
β βββ a_TwoPointers
β βββ b_SlidingWindow
β
βββ e_LinkedList
βββ SinglyLinkedList
β βββ a_BasicOperations
β βββ b_FastSlowPointers
β βββ c_Reversal
β βββ d_TwoPointers
β βββ e_DummyNode
β βββ f_MergeOrSort
β βββ g_HashMapOrStack
β
βββ DoublyLinkedList
βββ a_BasicOperations
βββ b_Reversal
This repository focuses heavily on interview patterns such as:
- Two Pointers
- Sliding Window
- Fast & Slow Pointers
- Prefix Sum
- Kadane's Algorithm
- Reversal Pattern
- Dummy Node Pattern
- Merge / Sort Pattern
- HashMap Pattern
- Stack-Based Pattern
Each pattern folder contains:
- Pattern Notes
- Recognition Clues
- Generic Templates
- Practice Problems
- Java Implementations
| Topic | Status |
|---|---|
| Foundations | β |
| Sorting | β |
| Arrays | π§ |
| Strings | π§ |
| Linked Lists | π§ |
| Recursion | β³ |
| Binary Search | β³ |
| Stack | β³ |
| Queue | β³ |
| Trees | β³ |
| Graphs | β³ |
| Dynamic Programming | β³ |
- β Completed
- π§ In Progress
- β³ Planned
For every problem:
- Understand the problem statement
- Identify the underlying pattern
- Build a brute-force solution
- Optimize the approach
- Analyze Time Complexity
- Analyze Space Complexity
- Implement clean Java code
Whenever applicable, solutions include:
- Brute Force Approach
- Better Approach
- Optimal Approach
- Java
- IntelliJ IDEA
- Git
- GitHub
Actively preparing for:
- Software Development Engineer (SDE) Roles
- Coding Interviews
- Technical Assessments
- Campus Placements
This repository is maintained primarily for learning and interview preparation.
Suggestions, optimizations, and improvements are always welcome.
https://github.com/prakashsalapu
https://linkedin.com/in/prakashsalapu
It motivates me to continue documenting and improving my DSA journey.