An open API service indexing awesome lists of open source software.

https://github.com/chandrakanthrck/algoquest_java


https://github.com/chandrakanthrck/algoquest_java

Last synced: 3 months ago
JSON representation

Awesome Lists containing this project

README

        

# AlgoQuest-Java

## Overview
Welcome to **AlgoQuest-Java**, a collection of solutions to popular Data Structures and Algorithms problems implemented in Java. This repository is designed to help anyone preparing for coding interviews or brushing up on essential topics. Each folder in the repository represents a different concept, and each concept contains various problem solutions, explanations, and approaches.

## Structure
This repository is structured around key algorithmic techniques and data structures commonly encountered in technical interviews. Each concept folder includes:
- A collection of variations of problems based on the concept.
- Solutions to these problems implemented in Java.
- An individual `README.md` for each concept, explaining when and how to use the technique, with smart hacks to help identify problems that fall under the concept.

### Concepts Covered:
1. **Two Pointers**: Efficiently solving problems that involve comparing pairs of elements, such as `Two Sum`, `Three Sum`, and more.
2. **Fast and Slow Pointers**: Solving problems that involve detecting cycles and linked list manipulations, like `Cycle Detection` and `Finding Middle of Linked List`.
3. **Sliding Window**: Solving problems involving contiguous subarrays or substrings, such as `Maximum Sum Subarray` and `Longest Substring with K Distinct Characters`.
4. **Island Matrix Traversal**: Techniques for solving problems on matrices, such as `Number of Islands` and `Surrounded Regions`.
5. **Merge Intervals**: Efficiently solving interval merging problems, such as `Merge Intervals` and `Insert Interval`.
6. **K-Way Merge**: Merging multiple sorted arrays or lists, such as `Merge K Sorted Lists` and `Smallest Range in K Lists`.
7. **Top K Elements (Heaps)**: Finding the top K largest or smallest elements, such as `Kth Largest Element` and `Top K Frequent Elements`.
8. **Tree Traversals (DFS/BFS)**: Depth-first and breadth-first search applied to binary trees, including problems like `Inorder Traversal` and `Level Order Traversal`.
9. **Cyclic Sort**: Sorting numbers in a range efficiently and finding missing numbers, such as `Find Missing Positive` and `Find All Duplicates`.
10. **Backtracking**: Solving combinatorial problems like `Subsets`, `Permutations`, and constraint satisfaction problems such as `N-Queens`.
11. **In-Place Reversal of Linked List**: Solving problems that involve reversing linked lists, like `Reverse Linked List` and `Reverse Nodes in K Group`.
12. **Topological Sort**: Handling problems involving graph traversal and dependency resolution, such as `Course Schedule`.

## How to Use
- Navigate to each concept folder to explore various solutions and approaches.
- Each concept folder contains a `README.md` explaining the concept, when to use it, and smart hacks to recognize the pattern in interview problems.
- Study the Java code implementations and run the examples to understand how the algorithm works.

## Contributions
Contributions are welcome! If you would like to improve any of the solutions, fix a bug, or add new problems under any concept, feel free to submit a pull request.

## License
This repository is open-source and available under the [MIT License](LICENSE).