Welcome to the JAVA-DSA repository! This repository tracks my progress through the "Alpha by Apna College" Data Structures and Algorithms course. Whether you're just starting or sharpening your skills, fork this repo to track your progress and conquer coding challenges!
- Course Overview
- Progress Tracker
- Topic Questions
- Structure Overview
- Forking the Repository
- Installation
- Usage
- Contributing
- License
- Contact
The "Alpha by Apna College" DSA course covers a wide range of topics including:
Sequence to Follow ⬇️
- Introduction to DSA
- Flowcharts & Pseudocode
- Datatypes & Variables
- Operators
- Conditional Statements
- Loops
- Patterns
- Functions or Methods
- Arrays
- Basic Sorting Algorithms
- 2D Array
- Strings
- Bit Manipulation
- OOPS
- Recusion
- Divide & Conquer
- Time & Space Complexity
- Backtracking
- ArrayList
- Linked List
- Stacks
- Queues
- Greedy Algorithms
- Binary Trees
- Binary Search Trees
- Heaps
- Hashing
- Tries
- Graphs
- Dynamic Programming
- Segment Trees
Topic | Status | Difficulty | Confidence Level (%) | External Resources | Completion Date |
---|---|---|---|---|---|
Introduction to DSA | 🕰️ Yet to Start | 🟩 Beginner | 0 | GeeksforGeeks | - |
Arrays | 🏃♂️ In Progress | 🟩 Beginner | 50 | LeetCode | - |
Linked Lists | 🕰️ Yet to Start | 🟩 Beginner | 0 | GeeksforGeeks | - |
Stacks and Queues | 🤦♂️ Procrastinated | 🟨 Intermediate | 25 | HackerRank | - |
Trees | 🕰️ Yet to Start | 🟨 Intermediate | 0 | GeeksforGeeks | - |
Graphs | 🏃♂️ In Progress | 🟨 Intermediate | 75 | HackerRank | - |
Sorting and Searching | 🎉 Completed | 🟥 Advanced | 100 | LeetCode | YYYY-MM-DD |
Dynamic Programming | 🏃♂️ In Progress | 🟥 Advanced | 60 | HackerRank | - |
Backtracking | 🏃♂️ In Progress | 🟥 Advanced | 50 | GeeksforGeeks | - |
Greedy Algorithms | 🕰️ Yet to Start | 🟥 Advanced | 0 | GeeksforGeeks | - |
Hashing | 🏃♂️ In Progress | 🟨 Intermediate | 80 | LeetCode | - |
More... | 🕰️ Yet to Start | 🌐 Varies | 0 | - | - |
- What is an algorithm? (Easy) - GeeksforGeeks
- Explain Big O notation. (Medium) - HackerRank
- Difference between time complexity and space complexity. (Medium) - LeetCode
- Find the maximum element in an array. (Easy) - LeetCode
- Implement a function to reverse an array. (Easy) - GeeksforGeeks
- Find the two numbers in an array that add up to a given sum. (Medium) - HackerRank
- Find the subarray with the maximum sum (Kadane's Algorithm). (Hard) - GeeksforGeeks
- Implement a singly linked list. (Easy) - GeeksforGeeks
- Detect a cycle in a linked list. (Medium) - LeetCode
- Merge two sorted linked lists. (Medium) - HackerRank
- Find the intersection point of two linked lists. (Hard) - GeeksforGeeks
- Implement a stack using arrays. (Easy) - GeeksforGeeks
- Implement a queue using two stacks. (Medium) - HackerRank
- Check for balanced parentheses in an expression. (Medium) - GeeksforGeeks
- Implement a circular queue. (Hard) - LeetCode
- Implement a binary tree. (Easy) - GeeksforGeeks
- Perform in-order traversal of a binary tree. (Medium) - LeetCode
- Find the height of a binary tree. (Medium) - HackerRank
- Check if a binary tree is balanced. (Hard) - GeeksforGeeks
- Implement a graph using an adjacency list. (Easy) - GeeksforGeeks
- Perform a depth-first search (DFS) on a graph. (Medium) - HackerRank
- Find the shortest path in an unweighted graph (BFS). (Medium) - GeeksforGeeks
- Detect a cycle in a directed graph. (Hard) - LeetCode
- Implement Bubble Sort. (Easy) - GeeksforGeeks
- Implement Binary Search. (Medium) - GeeksforGeeks
- Implement Merge Sort. (Medium) - HackerRank
- Find the Kth smallest element in an unsorted array. (Hard) - LeetCode
- 2D-Arrays, Advance Patterns, ArrayList, etc.: Each directory focuses on a specific topic or category of problems.
- Alpha 3.0: Contains PDF resources and curriculum materials, not Java code.
- Each main directory contains Java files (.java) and possibly compiled classes (.class) and output directories (out/production).
- Each Java file likely corresponds to a specific problem or example within that category. For instance, in 2D-Arrays, files like Array_Backtracking.java, Basic_2D_Arrays.java, etc., suggest different exercises related to 2D arrays.
out/production
subdirectories contain compiled .class files, indicating these are executable Java classes generated after compiling the .java files.
- Explore each directory to understand the specific problems or exercises covered.
- Review the .java files to see the code implementations and understand the logic behind each problem.
- Compile and run the Java classes (*.class) to see how each program behaves.
- Ensure you have a Java development environment set up (
javac
for compilation andjava
for execution).
- Start with directories like Arrays, Basic Sorting Algorithms, Conditional Statements, etc., which cover fundamental programming constructs.
- Progress to more complex topics like Backtracking, Dynamic Programming, Greedy Algorithms, etc., as your understanding deepens.
- Use the PDFs in Alpha 3.0 for additional learning resources and theoretical background on programming concepts.
Ready to dive in and make this your own? Follow these steps:
-
Fork the Repository:
- Click on the 'Fork' button at the top right corner of this page.
-
Clone your Fork:
git clone https://github.com/vickyraut/Java-DSA.git
-
Navigate to the Project Directory:
cd JAVA-DSA
-
Personalize the Progress Tracker:
- Edit the
README.md
file to update the progress tracker with your completion dates and statuses.
- Edit the
To set up this repository on your local machine:
- Ensure you have Java installed on your machine.
- Clone the repository:
git clone https://github.com/your_username/JAVA-DSA.git
- Navigate to the project directory:
cd JAVA-DSA
-
Explore Topics: Navigate through the directories to explore different topics covered in the DSA course.
-
Track Your Progress: Use the progress tracker table in the README to track your progress through each topic. Update the status and confidence level based on your understanding and practice.
-
Compile and Execute: Compile Java classes (*.java) using
javac
. Run the compiled classes usingjava
.
Love coding challenges? Join us and contribute:
- Fork this repository.
- Create a new branch:
git checkout -b feature-branch
- Make your changes and commit them:
git commit -m 'Add some feature'
- Push to the branch:
git push origin feature-branch
- Submit a pull request.
This project is licensed under the MIT License - see the LICENSE.md file for details.
Got questions or suggestions? Reach out to us:
- Email: vraut12cr@gmail.com
- GitHub: vickyraut