This repository is my personal learning workspace for Data Structures and Algorithms using Java. It contains practice problems, study notes, worked examples, and a progress log to help me track and improve my understanding over time.
- Track learning progress and milestones while studying DSA in Java.
- Store practice solutions, code examples, and small projects.
- Keep concise notes and explanations for concepts I want to remember.
- Build a habit of documenting learnings and improving by reworking solutions.
- Java files: use PascalCase for class names and file names (e.g.,
TwoSum.java). - Keep each practice problem small and self-contained. One public class per file.
- Provide a short comment at the top explaining the problem statement and complexity.
- Prefer simple input examples or a short
mainmethod to demonstrate usage.
- Use commits with clear messages like
solve: two-sum (array, O(n))ornote: explain BFS. - Add a short entry to a topic's
README.mdor mainREADME.mdwhen a milestone is reached.
From the repository root (or the folder with the .java file), compile and run Java files with:
javac Path/To/File/Example.java
java Path.To.File.Example(Adjust the package name or classpath if files use packages.)
- Fundamentals: arrays, strings, linked lists, stacks, queues, recursion.
- Algorithms: sorting, searching, two pointers, sliding window.
- Graphs & trees: DFS, BFS, binary trees, heaps.
- Dynamic programming: start with knapsack, Fibonacci variants, subsequence problems.
Work in small, focused sessions and write down one takeaway per solved problem.
- This is a personal learning repo. I will:
- Keep solutions small and readable.
- Revisit older solutions to refactor and optimize.
- Write short explanations beside code — it helps retention.
- Use branch/workspace per major topic if experimenting with larger projects.
Keep this README as a living document — update it as your workflow and structure evolve.