{"id":19957544,"url":"https://github.com/rimubytes/algoquest","last_synced_at":"2026-05-29T23:04:00.955Z","repository":{"id":257910934,"uuid":"836180239","full_name":"rimubytes/AlgoQuest","owner":"rimubytes","description":"Collection of LeetCode questions to ace the coding interview! ","archived":false,"fork":false,"pushed_at":"2026-05-18T08:54:57.000Z","size":147,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-05-18T10:46:16.446Z","etag":null,"topics":["algorithms","data-structures","leetcode-solutions"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rimubytes.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-07-31T10:08:24.000Z","updated_at":"2025-08-08T20:57:35.000Z","dependencies_parsed_at":"2025-01-10T21:41:18.973Z","dependency_job_id":"695c91ce-1d9c-4fcd-ae44-972364f8d64d","html_url":"https://github.com/rimubytes/AlgoQuest","commit_stats":null,"previous_names":["rimubytes/algoquest"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/rimubytes/AlgoQuest","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rimubytes%2FAlgoQuest","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rimubytes%2FAlgoQuest/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rimubytes%2FAlgoQuest/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rimubytes%2FAlgoQuest/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rimubytes","download_url":"https://codeload.github.com/rimubytes/AlgoQuest/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rimubytes%2FAlgoQuest/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33673653,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-05-29T02:00:06.066Z","response_time":107,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["algorithms","data-structures","leetcode-solutions"],"created_at":"2024-11-13T01:38:12.657Z","updated_at":"2026-05-29T23:04:00.936Z","avatar_url":"https://github.com/rimubytes.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Mastering Algorithms One Step at a Time\n\nA repository dedicated to mastering algorithms through hands-on practice. This project breaks down various algorithms into classes, starting from the basics and progressing to more advanced techniques. Each section introduces a class of algorithms, providing an overview of its approach, typical use cases, and a checklist to track progress as you implement them.\n\n## Project Overview\n\nThe goal of this repository is to:\n\n- Gain a deep understanding of algorithmic techniques and their applications.\n- Implement each algorithm from scratch to solidify problem-solving skills.\n- Document insights and challenges faced while solving each problem.\n  \nYou'll find algorithms divided into categories such as Divide and Conquer, Greedy Algorithms, Dynamic Programming, Backtracking, and more. Each section includes a brief description of the category followed by a checklist to track your learning.\n\n## Algorithm Categories\n\n### 1. **Divide and Conquer Algorithms**\n\nDivide and Conquer is a technique where a problem is divided into smaller sub-problems, each of which is solved independently before combining the results. These algorithms are often recursive and are especially useful for problems that can be broken down into smaller, similar sub-problems.\nCommon use cases: Sorting, searching, and geometric problems.\n  \n**Algorithms to Implement:**\n\n- [x] Merge Sort\n- [x] Quick Sort\n- [x] Binary Search\n- [x] Closest Pair of Points\n\n---\n\n### 2. **Greedy Algorithms**\n\nGreedy algorithms make a series of choices, each of which looks the best at that moment (locally optimal), with the hope of finding the overall best (globally optimal) solution. They are faster but may not always lead to the optimal solution.\nCommon use cases: Optimization problems like shortest paths and spanning trees.\n  \n**Algorithms to Implement:**\n\n- [x] Dijkstra's Algorithm (Shortest Path)\n- [x] Prim's Algorithm (Minimum Spanning Tree)\n- [ ] Kruskal's Algorithm (Minimum Spanning Tree)\n- [ ] Huffman Coding\n- [ ] Fractional Knapsack\n\n---\n\n### 3. **Dynamic Programming (DP)**\n\nDynamic Programming is used to solve problems by breaking them down into overlapping sub-problems and storing the results of these sub-problems to avoid redundant work. This technique is particularly powerful for optimization problems where decisions need to be made sequentially.\nCommon use cases: Sequence alignment, knapsack problem, and pathfinding.\n  \n**Algorithms to Implement:**\n\n- [x] Fibonacci Sequence\n- [x] Longest Common Subsequence\n- [ ] 0/1 Knapsack Problem\n- [x] Bellman-Ford Algorithm (Shortest Path)\n- [ ] Coin Change Problem\n\n---\n\n### 4. **Backtracking Algorithms**\n\nBacktracking is a technique used to solve constraint satisfaction problems by incrementally building a solution and abandoning (backtracking) if it doesn’t meet the constraints. It's a brute-force algorithmic approach with pruning.\nCommon use cases: Puzzles like Sudoku, and combinatorial problems.\n  \n**Algorithms to Implement:**\n\n- [x] N-Queens Problem\n- [x] Sudoku Solver\n- [ ] Hamiltonian Path Problem\n- [ ] Subset Sum Problem\n\n---\n\n### 5. **Branch and Bound Algorithms**\n\nBranch and Bound is an optimization technique similar to backtracking but focuses on exploring the most promising branches first, while using bounds to eliminate others. It is often used to find optimal solutions to NP-hard problems.\nCommon use cases: Knapsack problems and combinatorial optimization.\n  \n**Algorithms to Implement:**\n\n- [ ] Traveling Salesman Problem (TSP)\n- [ ] 0/1 Knapsack Problem (Branch and Bound)\n\n---\n\n### 6. **Graph Algorithms**\n\nGraph algorithms operate on data structures made up of nodes and edges, solving problems like finding the shortest path, detecting cycles, and more. Graph theory forms the foundation for much of modern networking and data structure design.\nCommon use cases: Pathfinding, scheduling, and network flow.\n  \n**Algorithms to Implement:**\n\n- [x] Breadth-First Search (BFS)\n- [x] Depth-First Search (DFS)\n- [ ] Floyd-Warshall Algorithm (All-Pairs Shortest Paths)\n- [ ] Topological Sort\n- [ ] A* Algorithm\n\n---\n\n### 7. **Sorting Algorithms**\n\nSorting algorithms are fundamental and deal with arranging data in a particular order. They are essential for optimizing other algorithms that require sorted data (like search algorithms) and are a key aspect of computer science.\nCommon use cases: Data analysis, searching, and preprocessing.\n  \n**Algorithms to Implement:**\n\n- [x] Bubble Sort\n- [x] Selection Sort\n- [x] Insertion Sort\n- [x] Heap Sort\n- [ ] Merge Sort\n- [ ] Quick Sort\n\n---\n\n### 8. **Search Algorithms**\n\nSearch algorithms are used to find specific data within a data structure. Whether searching in linear or non-linear data structures, they are key for applications ranging from databases to artificial intelligence.\nCommon use cases: Searching elements in a list or tree.\n  \n**Algorithms to Implement:**\n\n- [x] Linear Search\n- [x] Binary Search\n- [x] Depth-First Search (DFS)\n- [x] Breadth-First Search (BFS)\n\n---\n\n### 9. **Mathematical Algorithms**\n\nThese algorithms are based on fundamental mathematical principles and are often used to solve number theory problems, perform calculations, or work with primes and factors.\nCommon use cases: Cryptography, number theory, and combinatorics.\n  \n**Algorithms to Implement:**\n\n- [ ] Euclidean Algorithm (GCD)\n- [ ] Sieve of Eratosthenes (Prime Numbers)\n- [ ] Fast Fourier Transform (FFT)\n- [ ] Exponentiation by Squaring\n\n---\n\n### 10. **String Algorithms**\n\nString algorithms handle operations related to sequences of characters, like pattern matching and substring search. Efficient string manipulation is crucial in fields like computational biology and text processing.\nCommon use cases: Pattern matching, text analysis, and bioinformatics.\n  \n**Algorithms to Implement:**\n\n- [ ] Knuth-Morris-Pratt (KMP) Pattern Matching\n- [ ] Rabin-Karp Algorithm\n- [ ] Z Algorithm (Pattern Matching)\n- [ ] Longest Palindromic Substring\n\n---\n\n### 11. **Randomized Algorithms**\n\nThese algorithms use random choices during execution to provide solutions, often simplifying complex problems. They are particularly useful when deterministic algorithms are too slow or complicated.\nCommon use cases: Approximation problems and probabilistic data structures.\n  \n**Algorithms to Implement:**\n\n- [ ] Randomized Quick Sort\n- [ ] Monte Carlo Algorithm\n- [ ] Las Vegas Algorithm\n- [ ] Randomized Min-Cut Algorithm\n\n---\n\n### Progress Overview:\n\n- [x] Beginner Algorithms\n- [ ] Intermediate Algorithms\n- [ ] Advanced Algorithms\n\n---\n\n## How to Use This Repository\n\n1. Pick an algorithm category that interests you.\n2. Learn about the theory behind each algorithm.\n3. Implement the algorithm from scratch in your language of choice.\n4. Document challenges, insights, and optimizations in the `Notes` section.\n5. Check off the algorithms as you complete them.\n\n---\n\n### Notes:\n\nDocument any challenges or insights you faced while solving the algorithms here.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frimubytes%2Falgoquest","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frimubytes%2Falgoquest","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frimubytes%2Falgoquest/lists"}