{"id":25019628,"url":"https://github.com/djeada/algorithms-and-data-structures","last_synced_at":"2025-05-16T08:06:46.855Z","repository":{"id":63917332,"uuid":"264454530","full_name":"djeada/Algorithms-And-Data-Structures","owner":"djeada","description":"A collection of projects in C++ and Python that implement various data structures and algorithms. The projects are organized by language and topic, and include detailed explanations and examples to help you understand how they work.","archived":false,"fork":false,"pushed_at":"2025-05-12T10:39:39.000Z","size":4250,"stargazers_count":340,"open_issues_count":0,"forks_count":58,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-05-12T11:42:57.439Z","etag":null,"topics":["algorithms","backtracking","collections","data-structures","dynamic-programming","sorting-algorithms"],"latest_commit_sha":null,"homepage":"https://adamdjellouli.com/articles/algorithms_and_data_structures","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/djeada.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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}},"created_at":"2020-05-16T14:25:55.000Z","updated_at":"2025-05-12T10:39:42.000Z","dependencies_parsed_at":"2024-06-29T09:46:15.197Z","dependency_job_id":"6b9bcaa7-5345-4bce-b89a-742554cab199","html_url":"https://github.com/djeada/Algorithms-And-Data-Structures","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/djeada%2FAlgorithms-And-Data-Structures","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/djeada%2FAlgorithms-And-Data-Structures/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/djeada%2FAlgorithms-And-Data-Structures/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/djeada%2FAlgorithms-And-Data-Structures/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/djeada","download_url":"https://codeload.github.com/djeada/Algorithms-And-Data-Structures/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254493385,"owners_count":22080127,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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","backtracking","collections","data-structures","dynamic-programming","sorting-algorithms"],"created_at":"2025-02-05T11:51:15.061Z","updated_at":"2025-05-16T08:06:41.847Z","avatar_url":"https://github.com/djeada.png","language":"C++","readme":"# Algorithms-And-Data-Structures\n\n\u003ca href=\"https://github.com/djeada/Data-Structures/stargazers\"\u003e\u003cimg alt=\"GitHub stars\" src=\"https://img.shields.io/github/stars/djeada/Data-Structures\"\u003e\u003c/a\u003e\n\u003ca href=\"https://github.com/djeada/Data-Structures/network\"\u003e\u003cimg alt=\"GitHub forks\" src=\"https://img.shields.io/github/forks/djeada/Data-Structures\"\u003e\u003c/a\u003e\n\u003ca href=\"https://github.com/djeada/Data-Structures/blob/master/LICENSE\"\u003e\u003cimg alt=\"GitHub license\" src=\"https://img.shields.io/github/license/djeada/Data-Structures\"\u003e\u003c/a\u003e\n\u003ca href=\"\"\u003e\u003cimg src=\"https://img.shields.io/badge/contributions-welcome-brightgreen.svg?style=flat\"\u003e\u003c/a\u003e\n\u003c/div\u003e\n\nThis repository contains a collection of projects in C++ and Python that implement various data structures and algorithms. The projects are organized by language and topic, and include detailed explanations and examples to help you understand how they work.\n\n![algorithms](https://user-images.githubusercontent.com/37275728/213442579-155a1549-89ee-43d1-878b-9d1673524a5a.png)\n\n## About\n\nEver since I first tackled Algorithms and Data Structures at university in 2015, I've found it super useful to regularly go back to the basics. This becomes even more important when you're trying to learn a new programming language - a strong foundation is key. To help others, I've decided to share my code and notes on the subject with everyone.\n\nMy code is written in two programming languages I really enjoy, C++ and Python. I've done my best to stick to the latest best practices. Alongside the code, you'll find the notes I made while learning. These notes give more context and could be really handy for anyone new to Algorithms and Data Structures.\n\n## Requirements\n\nThe following requirements are necessary to build and run the code in this repository:\n\n* For C++ projects:\n  - A C++ compiler supporting C++14\n  - CMake 3.15 or later\n* For Python projects:\n  - Python 3.10 or later\n\nNo additional libraries or modules are required.\n\n## Running the Examples\n\nThis repository is organized into distinct algorithm implementations, each contained in its own subdirectory. These subdirectories provide the source code, unit tests, and build configuration files necessary for each algorithm. Because each algorithm forms a separate project, you should handle the build and test processes individually.\n\n### Building and Testing C++ Projects\n\nBuilding and testing C++ projects involve a sequence of steps. Here's a detailed walkthrough:\n\n1. **Navigate to the project directory:** Start by moving into the directory containing the specific project you want to build and test.\n\n2. **Create and navigate into the build directory:**\n\n```\nmkdir -p build \u0026\u0026 cd build\n```\n\nThis command creates a new directory named `build` (if it doesn't already exist) and then navigates into it. The `build` directory is where the output files of the build process will be stored.\n\n3. **Generate the build files with CMake:**\n\n```\ncmake ..\n```\n\nThis command runs CMake to generate the build files. `..` tells CMake to look for the `CMakeLists.txt` file in the directory above `build`.\n\n4. **Build the project:**\n\n```\nmake\n```\n\nThis command compiles the source code using the instructions specified in the `CMakeLists.txt` file.\n\n5. **Run the unit tests:**\n\n```\nctest --verbose\n```\n\nThe `ctest --verbose` command executes the unit tests and uses the verbose flag to provide a detailed output.\n\n### Testing Python Projects\n\nTo test a Python project, execute the following command in the project directory:\n\n```\npython -m unittest discover -v\n```\n\nThis command uses Python's built-in `unittest` module to discover and run the tests. The `-v` (verbose) flag is used to get more detailed output from the tests.\n\n### Using the Testing Utility Script\n\nFor convenience, this repository includes a utility script named `run_tests.sh`. Execute the following commands from the repository's root to run tests in all subprojects:\n\n- **To run _all_ unit tests:** `./run_tests.sh`\n- **To run all _Python_ tests:** `./run_tests.sh --python`\n- **To run all _C++_ tests:** `./run_tests.sh --cpp`\n- **To read all options from terminal:** `./run_tests.sh --help`\n\n## Code Formatting Conventions\n\nConsistent code formatting is essential for maintaining readability and understanding of the codebase. Therefore, we have adopted specific formatting guidelines for each programming language used in this repository.\n\n### C++ Formatting\n\nWe adhere to the [Google C++ Style Guide](https://google.github.io/styleguide/cppguide.html). To automatically format the code, we use `clang-format`. Use the following command to format your code:\n\n```\nfind . -regex '.*\\\\.(cpp|hpp|cu|c|h)' -exec clang-format -style=file -i {} \\\\;\n```\n\nThis command recursively finds all files with `.cpp`, `.hpp`, `.cu`, `.c`, or `.h` extensions and formats them using `clang-format`.\n\n### CMake Formatting\n\nCMake files should have a consistent style as well. For this, we use `cmake-format`. To format a `CMakeLists.txt` file, execute the following command:\n\n```\ncmake-format CMakeLists.txt -i\n```\n\nThis command applies the `cmake-format` to the `CMakeLists.txt` file.\n\n### Python Formatting\n\nWe follow the [PEP 8 - Style Guide for Python Code](https://peps.python.org/pep-0008/) for Python projects and use `black` to automatically format the code. Use the following command to format your Python code:\n\n```\nblack .\n```\n\nThis command formats all Python files in the current directory and its subdirectories using `black`.\n\n## Notes\n\n* \u003ca href=\"https://github.com/djeada/Algorithms-And-Data-Structures/blob/master/notes/basic_concepts.md\"\u003eBasic concepts.\u003c/a\u003e\n* \u003ca href=\"https://github.com/djeada/Algorithms-And-Data-Structures/blob/master/notes/data_structures.md\"\u003eData structures.\u003c/a\u003e\n* \u003ca href=\"https://github.com/djeada/Algorithms-And-Data-Structures/blob/master/notes/graphs.md\"\u003eGraph algorithms.\u003c/a\u003e\n* \u003ca href=\"https://github.com/djeada/Algorithms-And-Data-Structures/blob/master/notes/backtracking.md\"\u003eBacktracking.\u003c/a\u003e\n* \u003ca href=\"https://github.com/djeada/Algorithms-And-Data-Structures/blob/master/notes/dynamic_programming.md\"\u003eDynamic programming.\u003c/a\u003e\n* \u003ca href=\"https://github.com/djeada/Algorithms-And-Data-Structures/blob/master/notes/sorting.md\"\u003eSorting.\u003c/a\u003e\n* \u003ca href=\"https://github.com/djeada/Algorithms-And-Data-Structures/blob/master/notes/brain_teasers.md\"\u003eBrain teasers.\u003c/a\u003e\n\n## List of projects\n\n### Data structures\n\u003ctable\u003e\n    \u003cthead\u003e\n        \u003ctr\u003e\n            \u003cth\u003e#\u003c/th\u003e\n            \u003cth\u003eStructure\u003c/th\u003e\n            \u003cth colspan=\"2\"\u003eImplementation\u003c/th\u003e\n        \u003c/tr\u003e\n    \u003c/thead\u003e\n    \u003ctbody\u003e\n        \u003ctr\u003e\n            \u003ctd\u003e1\u003c/td\u003e\n            \u003ctd\u003eLinked List\u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://github.com/djeada/Algorithms-And-Data-Structures/blob/master/src/collections_and_containers/python/linked_list\"\u003ePython\u003c/a\u003e\u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://github.com/djeada/Algorithms-And-Data-Structures/blob/master/src/collections_and_containers/cpp/linked_list\"\u003eCpp\u003c/a\u003e\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd\u003e2\u003c/td\u003e\n            \u003ctd\u003eVector\u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://github.com/djeada/Algorithms-And-Data-Structures/blob/master/src/collections_and_containers/python/vector\"\u003ePython\u003c/a\u003e\u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://github.com/djeada/Algorithms-And-Data-Structures/blob/master/src/collections_and_containers/cpp/vector\"\u003eCpp\u003c/a\u003e\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd\u003e3\u003c/td\u003e\n            \u003ctd\u003eStack\u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://github.com/djeada/Algorithms-And-Data-Structures/tree/master/src/collections_and_containers/python/stack\"\u003ePython\u003c/a\u003e\u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://github.com/djeada/Algorithms-And-Data-Structures/blob/master/src/collections_and_containers/cpp/stack\"\u003eCpp\u003c/a\u003e\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd\u003e4\u003c/td\u003e\n            \u003ctd\u003eQueue\u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://github.com/djeada/Algorithms-And-Data-Structures/tree/master/src/collections_and_containers/python/simple_queue\"\u003ePython\u003c/a\u003e\u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://github.com/djeada/Algorithms-And-Data-Structures/blob/master/src/collections_and_containers/cpp/queue\"\u003eCpp\u003c/a\u003e\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd\u003e5\u003c/td\u003e\n            \u003ctd\u003eHeap\u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://github.com/djeada/Algorithms-And-Data-Structures/tree/master/src/collections_and_containers/python/heap\"\u003ePython\u003c/a\u003e\u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://github.com/djeada/Algorithms-And-Data-Structures/blob/master/src/collections_and_containers/cpp/heap\"\u003eCpp\u003c/a\u003e\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd\u003e6\u003c/td\u003e\n            \u003ctd\u003eBinary Search Tree\u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://github.com/djeada/Algorithms-And-Data-Structures/blob/master/src/collections_and_containers/python/binary_search_tree\"\u003ePython\u003c/a\u003e\u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://github.com/djeada/Algorithms-And-Data-Structures/blob/master/src/collections_and_containers/cpp/binary_search_tree\"\u003eCpp\u003c/a\u003e\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd\u003e7\u003c/td\u003e\n            \u003ctd\u003eAvl Tree\u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://github.com/djeada/Algorithms-And-Data-Structures/blob/master/src/collections_and_containers/python/avl_tree\"\u003ePython\u003c/a\u003e\u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://github.com/djeada/Algorithms-And-Data-Structures/blob/master/src/collections_and_containers/cpp/avl_tree\"\u003eCpp\u003c/a\u003e\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd\u003e8\u003c/td\u003e\n            \u003ctd\u003eRed Black Tree\u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://github.com/djeada/Algorithms-And-Data-Structures/blob/master/src/collections_and_containers/python/red_black_tree\"\u003ePython\u003c/a\u003e\u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://github.com/djeada/Algorithms-And-Data-Structures/blob/master/src/collections_and_containers/cpp/red_black_tree\"\u003eCpp\u003c/a\u003e\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd\u003e9\u003c/td\u003e\n            \u003ctd\u003eHash Table\u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://github.com/djeada/Algorithms-And-Data-Structures/tree/master/src/collections_and_containers/python/hash_table\"\u003ePython\u003c/a\u003e\u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://github.com/djeada/Algorithms-And-Data-Structures/blob/master/src/collections_and_containers/cpp/hash_table\"\u003eCpp\u003c/a\u003e\u003c/td\u003e\n        \u003c/tr\u003e\n    \u003c/tbody\u003e\n\u003c/table\u003e\n\n\n### Graphs\n\u003ctable\u003e\n    \u003cthead\u003e\n        \u003ctr\u003e\n            \u003cth\u003e#\u003c/th\u003e\n            \u003cth\u003eAlgorithm\u003c/th\u003e\n            \u003cth colspan=\"2\"\u003eImplementation\u003c/th\u003e\n        \u003c/tr\u003e\n    \u003c/thead\u003e\n    \u003ctbody\u003e\n        \u003ctr\u003e\n            \u003ctd\u003e1\u003c/td\u003e\n            \u003ctd\u003eGeneral graph\u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://github.com/djeada/Data-Structures/blob/master/src/graphs/python/graph\"\u003ePython\u003c/a\u003e\u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://github.com/djeada/Data-Structures/tree/master/src/graphs/cpp/graph\"\u003eCpp\u003c/a\u003e\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd\u003e1\u003c/td\u003e\n            \u003ctd\u003eIs Bipartite?\u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://github.com/djeada/Data-Structures/blob/master/src/graphs/python/bipartite_graph\"\u003ePython\u003c/a\u003e\u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://github.com/djeada/Data-Structures/tree/master/src/graphs/cpp/bipartite_graph\"\u003eCpp\u003c/a\u003e\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd\u003e2\u003c/td\u003e\n            \u003ctd\u003eBFS\u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://github.com/djeada/Algorithms-And-Data-Structures/tree/master/src/graphs/python/bfs\"\u003ePython\u003c/a\u003e\u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://github.com/djeada/Data-Structures/tree/master/src/graphs/cpp/bfs\"\u003eCpp\u003c/a\u003e\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd\u003e3\u003c/td\u003e\n            \u003ctd\u003eDFS\u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://github.com/djeada/Algorithms-And-Data-Structures/tree/master/src/graphs/python/dfs\"\u003ePython\u003c/a\u003e\u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://github.com/djeada/Algorithms-And-Data-Structures/tree/master/src/graphs/cpp/dfs\"\u003eCpp\u003c/a\u003e\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd\u003e4\u003c/td\u003e\n            \u003ctd\u003eDijkstra\u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://github.com/djeada/Data-Structures/blob/master/src/graphs/python/dijkstra\"\u003ePython\u003c/a\u003e\u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://github.com/djeada/Algorithms-And-Data-Structures/tree/master/src/graphs/cpp/dijkstra\"\u003eCpp\u003c/a\u003e\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd\u003e5\u003c/td\u003e\n            \u003ctd\u003eA*\u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://github.com/djeada/Algorithms-And-Data-Structures/tree/master/src/graphs/python/a_star\"\u003ePython\u003c/a\u003e\u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://github.com/djeada/Algorithms-And-Data-Structures/tree/master/src/graphs/cpp/a_star\"\u003eCpp\u003c/a\u003e\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd\u003e6\u003c/td\u003e\n            \u003ctd\u003eBellman-Ford\u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://github.com/djeada/Algorithms-And-Data-Structures/tree/master/src/graphs/python/bellman_ford\"\u003ePython\u003c/a\u003e\u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://github.com/djeada/Algorithms-And-Data-Structures/tree/master/src/graphs/cpp/bellman_ford\"\u003eCpp\u003c/a\u003e\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd\u003e7\u003c/td\u003e\n            \u003ctd\u003eKruskal\u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://github.com/djeada/Algorithms-And-Data-Structures/tree/master/src/graphs/python/kruskal\"\u003ePython\u003c/a\u003e\u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://github.com/djeada/Algorithms-And-Data-Structures/tree/master/src/graphs/cpp/kruskal\"\u003eCpp\u003c/a\u003e\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd\u003e8\u003c/td\u003e\n            \u003ctd\u003ePrim\u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://github.com/djeada/Algorithms-And-Data-Structures/tree/master/src/graphs/python/prim\"\u003ePython\u003c/a\u003e\u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://github.com/djeada/Algorithms-And-Data-Structures/tree/master/src/graphs/cpp/prim\"\u003eCpp\u003c/a\u003e\u003c/td\u003e\n        \u003c/tr\u003e\n    \u003c/tbody\u003e\n\u003c/table\u003e\n\n### Backtracking\n\u003ctable\u003e\n    \u003cthead\u003e\n        \u003ctr\u003e\n            \u003cth\u003e#\u003c/th\u003e\n            \u003cth\u003eProblem\u003c/th\u003e\n            \u003cth colspan=\"2\"\u003eSolution\u003c/th\u003e\n        \u003c/tr\u003e\n    \u003c/thead\u003e\n    \u003ctbody\u003e\n        \u003ctr\u003e\n            \u003ctd\u003e1\u003c/td\u003e\n            \u003ctd\u003ePermutations\u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://github.com/djeada/Algorithms-And-Data-Structures/tree/master/src/backtracking/python/all_permutations\"\u003ePython\u003c/a\u003e\u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://github.com/djeada/Algorithms-And-Data-Structures/tree/master/src/backtracking/cpp/all_permutations\"\u003eCpp\u003c/a\u003e\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd\u003e2\u003c/td\u003e\n            \u003ctd\u003eCombinations\u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://github.com/djeada/Algorithms-And-Data-Structures/tree/master/src/backtracking/python/all_combinations\"\u003ePython\u003c/a\u003e\u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://github.com/djeada/Algorithms-And-Data-Structures/tree/master/src/backtracking/cpp/all_permutations\"\u003eCpp\u003c/a\u003e\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd\u003e3\u003c/td\u003e\n            \u003ctd\u003eString Pattern\u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://github.com/djeada/Algorithms-And-Data-Structures/tree/master/src/backtracking/python/string_pattern\"\u003ePython\u003c/a\u003e\u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://github.com/djeada/Algorithms-And-Data-Structures/tree/master/src/backtracking/cpp/string_pattern\"\u003eCpp\u003c/a\u003e\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd\u003e4\u003c/td\u003e\n            \u003ctd\u003eGenerating words\u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://github.com/djeada/Algorithms-And-Data-Structures/tree/master/src/backtracking/python/generating_words\"\u003ePython\u003c/a\u003e\u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://github.com/djeada/Algorithms-And-Data-Structures/tree/master/src/backtracking/cpp/generating_words\"\u003eCpp\u003c/a\u003e\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd\u003e5\u003c/td\u003e\n            \u003ctd\u003eK-colorable configurations\u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://github.com/djeada/Algorithms-And-Data-Structures/tree/master/src/backtracking/python/k_colorable_configurations\"\u003ePython\u003c/a\u003e\u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://github.com/djeada/Algorithms-And-Data-Structures/tree/master/src/backtracking/cpp/k_colorable_configurations\"\u003eCpp\u003c/a\u003e\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd\u003e6\u003c/td\u003e\n            \u003ctd\u003eHamiltonian paths\u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://github.com/djeada/Algorithms-And-Data-Structures/tree/master/src/backtracking/python/hamiltonian_paths\"\u003ePython\u003c/a\u003e\u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://github.com/djeada/Algorithms-And-Data-Structures/tree/master/src/backtracking/cpp/hamiltonian_paths\"\u003eCpp\u003c/a\u003e\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd\u003e7\u003c/td\u003e\n            \u003ctd\u003eKnigt tour\u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://github.com/djeada/Algorithms-And-Data-Structures/tree/master/src/backtracking/python/knight_tour\"\u003ePython\u003c/a\u003e\u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://github.com/djeada/Algorithms-And-Data-Structures/tree/master/src/backtracking/cpp/knight_tour\"\u003eCpp\u003c/a\u003e\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd\u003e8\u003c/td\u003e\n            \u003ctd\u003eTopological orderings\u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://github.com/djeada/Algorithms-And-Data-Structures/tree/master/src/backtracking/python/topological_sort\"\u003ePython\u003c/a\u003e\u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://github.com/djeada/Algorithms-And-Data-Structures/tree/master/src/backtracking/cpp/topological_sort\"\u003eCpp\u003c/a\u003e\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd\u003e9\u003c/td\u003e\n            \u003ctd\u003eTic-tac-toe (minimax)\u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://github.com/djeada/Algorithms-And-Data-Structures/tree/master/src/backtracking/python/minimax\"\u003ePython\u003c/a\u003e\u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://github.com/djeada/Algorithms-And-Data-Structures/tree/master/src/backtracking/cpp/minimax\"\u003eCpp\u003c/a\u003e\u003c/td\u003e\n        \u003c/tr\u003e\n    \u003c/tbody\u003e\n\u003c/table\u003e\n\n### Dynamic Programming\n\u003ctable\u003e\n    \u003cthead\u003e\n        \u003ctr\u003e\n            \u003cth\u003e#\u003c/th\u003e\n            \u003cth\u003eProblem\u003c/th\u003e\n            \u003cth colspan=\"2\"\u003eSolution\u003c/th\u003e\n        \u003c/tr\u003e\n    \u003c/thead\u003e\n    \u003ctbody\u003e\n        \u003ctr\u003e\n            \u003ctd\u003e1\u003c/td\u003e\n            \u003ctd\u003eFibonacci\u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://github.com/djeada/Algorithms-And-Data-Structures/tree/master/src/dynamic_programming/python/fibonacci\"\u003ePython\u003c/a\u003e\u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://github.com/djeada/Algorithms-And-Data-Structures/tree/master/src/dynamic_programming/cpp/fibonacci\"\u003eCpp\u003c/a\u003e\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd\u003e2\u003c/td\u003e\n            \u003ctd\u003eGrid travelers\u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://github.com/djeada/Algorithms-And-Data-Structures/tree/master/src/dynamic_programming/python/grid_traveler\"\u003ePython\u003c/a\u003e\u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://github.com/djeada/Algorithms-And-Data-Structures/tree/master/src/dynamic_programming/cpp/grid_travelers\"\u003eCpp\u003c/a\u003e\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd\u003e3\u003c/td\u003e\n            \u003ctd\u003eStairs\u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://github.com/djeada/Algorithms-And-Data-Structures/tree/master/src/dynamic_programming/python/climbing_stairs\"\u003ePython\u003c/a\u003e\u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://github.com/djeada/Algorithms-And-Data-Structures/tree/master/src/dynamic_programming/cpp/climb_stairs\"\u003eCpp\u003c/a\u003e\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd\u003e4\u003c/td\u003e\n            \u003ctd\u003eCan sum\u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://github.com/djeada/Algorithms-And-Data-Structures/tree/master/src/dynamic_programming/python/can_sum\"\u003ePython\u003c/a\u003e\u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://github.com/djeada/Algorithms-And-Data-Structures/tree/master/src/dynamic_programming/cpp/can_sum\"\u003eCpp\u003c/a\u003e\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd\u003e5\u003c/td\u003e\n            \u003ctd\u003eHow sum\u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://github.com/djeada/Algorithms-And-Data-Structures/tree/master/src/dynamic_programming/python/how_sum\"\u003ePython\u003c/a\u003e\u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://github.com/djeada/Algorithms-And-Data-Structures/tree/master/src/dynamic_programming/cpp/how_sum\"\u003eCpp\u003c/a\u003e\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd\u003e6\u003c/td\u003e\n            \u003ctd\u003eBest sum\u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://github.com/djeada/Algorithms-And-Data-Structures/tree/master/src/dynamic_programming/python/best_sum\"\u003ePython\u003c/a\u003e\u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://github.com/djeada/Algorithms-And-Data-Structures/tree/master/src/dynamic_programming/cpp/best_sum\"\u003eCpp\u003c/a\u003e\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd\u003e7\u003c/td\u003e\n            \u003ctd\u003eCan construct\u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://github.com/djeada/Algorithms-And-Data-Structures/tree/master/src/dynamic_programming/python/can_construct\"\u003ePython\u003c/a\u003e\u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://github.com/djeada/Algorithms-And-Data-Structures/tree/master/src/dynamic_programming/cpp/can_construct\"\u003eCpp\u003c/a\u003e\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd\u003e8\u003c/td\u003e\n            \u003ctd\u003eCount construct\u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://github.com/djeada/Algorithms-And-Data-Structures/tree/master/src/dynamic_programming/python/count_construct\"\u003ePython\u003c/a\u003e\u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://github.com/djeada/Algorithms-And-Data-Structures/tree/master/src/dynamic_programming/cpp/count_construct\"\u003eCpp\u003c/a\u003e\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd\u003e9\u003c/td\u003e\n            \u003ctd\u003eAll construct\u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://github.com/djeada/Algorithms-And-Data-Structures/tree/master/src/dynamic_programming/python/all_construct\"\u003ePython\u003c/a\u003e\u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://github.com/djeada/Algorithms-And-Data-Structures/tree/master/src/dynamic_programming/cpp/all_construct\"\u003eCpp\u003c/a\u003e\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd\u003e10\u003c/td\u003e\n            \u003ctd\u003eCoins\u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://github.com/djeada/Algorithms-And-Data-Structures/tree/master/src/dynamic_programming/python/coins\"\u003ePython\u003c/a\u003e\u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://github.com/djeada/Algorithms-And-Data-Structures/tree/master/src/dynamic_programming/cpp/coin_change\"\u003eCpp\u003c/a\u003e\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd\u003e11\u003c/td\u003e\n            \u003ctd\u003eLongest increasing subsequence\u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://github.com/djeada/Algorithms-And-Data-Structures/tree/master/src/dynamic_programming/python/longest_increasing_subarray\"\u003ePython\u003c/a\u003e\u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://github.com/djeada/Algorithms-And-Data-Structures/tree/master/src/dynamic_programming/cpp/longest_increasing_subarray\"\u003eCpp\u003c/a\u003e\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd\u003e12\u003c/td\u003e\n            \u003ctd\u003eLongest common subsequence\u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://github.com/djeada/Algorithms-And-Data-Structures/tree/master/src/dynamic_programming/python/longest_common_subsequence\"\u003ePython\u003c/a\u003e\u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://github.com/djeada/Algorithms-And-Data-Structures/tree/master/src/dynamic_programming/cpp/longest_common_subsequence\"\u003eCpp\u003c/a\u003e\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd\u003e13\u003c/td\u003e\n            \u003ctd\u003eKnuth-Morris-Pratt\u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://github.com/djeada/Algorithms-And-Data-Structures/tree/master/src/dynamic_programming/python/kmp\"\u003ePython\u003c/a\u003e\u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://github.com/djeada/Algorithms-And-Data-Structures/tree/master/src/dynamic_programming/cpp/kmp\"\u003eCpp\u003c/a\u003e\u003c/td\u003e\n        \u003c/tr\u003e\n         \u003ctr\u003e\n            \u003ctd\u003e14\u003c/td\u003e\n            \u003ctd\u003eMinimum insertions to form a palindrome\u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://github.com/djeada/Algorithms-And-Data-Structures/tree/master/src/dynamic_programming/python/minimum_insertions_for_palindrome\"\u003ePython\u003c/a\u003e\u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://github.com/djeada/Algorithms-And-Data-Structures/tree/master/src/dynamic_programming/cpp/minimum_insertions_for_palindrome\"\u003eCpp\u003c/a\u003e\u003c/td\u003e\n        \u003c/tr\u003e\n    \u003c/tbody\u003e\n\u003c/table\u003e\n\n### Sorting\n\u003ctable\u003e\n    \u003cthead\u003e\n        \u003ctr\u003e\n            \u003cth\u003e#\u003c/th\u003e\n            \u003cth\u003eAlgorithm\u003c/th\u003e\n            \u003cth colspan=\"2\"\u003eImplementation\u003c/th\u003e\n        \u003c/tr\u003e\n    \u003c/thead\u003e\n    \u003ctbody\u003e\n        \u003ctr\u003e\n            \u003ctd\u003e1\u003c/td\u003e\n            \u003ctd\u003eInsertion sort\u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://github.com/djeada/Algorithms-And-Data-Structures/tree/master/src/sorting/python/insertion_sort\"\u003ePython\u003c/a\u003e\u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://github.com/djeada/Algorithms-And-Data-Structures/tree/master/src/sorting/cpp/insertion_sort\"\u003eCpp\u003c/a\u003e\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd\u003e2\u003c/td\u003e\n            \u003ctd\u003eSelection sort\u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://github.com/djeada/Algorithms-And-Data-Structures/tree/master/src/sorting/python/selection_sort\"\u003ePython\u003c/a\u003e\u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://github.com/djeada/Algorithms-And-Data-Structures/tree/master/src/sorting/cpp/selection_sort\"\u003eCpp\u003c/a\u003e\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd\u003e3\u003c/td\u003e\n            \u003ctd\u003eHeap sort\u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://github.com/djeada/Algorithms-And-Data-Structures/tree/master/src/sorting/python/heap_sort\"\u003ePython\u003c/a\u003e\u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://github.com/djeada/Algorithms-And-Data-Structures/tree/master/src/sorting/cpp/heap_sort\"\u003eCpp\u003c/a\u003e\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd\u003e4\u003c/td\u003e\n            \u003ctd\u003eMerge sort\u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://github.com/djeada/Algorithms-And-Data-Structures/tree/master/src/sorting/python/merge_sort\"\u003ePython\u003c/a\u003e\u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://github.com/djeada/Algorithms-And-Data-Structures/tree/master/src/sorting/cpp/merge_sort\"\u003eCpp\u003c/a\u003e\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd\u003e5\u003c/td\u003e\n            \u003ctd\u003eQuick sort\u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://github.com/djeada/Algorithms-And-Data-Structures/tree/master/src/sorting/python/quick_sort\"\u003ePython\u003c/a\u003e\u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://github.com/djeada/Algorithms-And-Data-Structures/tree/master/src/sorting/cpp/quick_sort\"\u003eCpp\u003c/a\u003e\u003c/td\u003e\n        \u003c/tr\u003e\n    \u003c/tbody\u003e\n\u003c/table\u003e\n\n### Brain Teasers\n\u003ctable\u003e\n    \u003cthead\u003e\n        \u003ctr\u003e\n            \u003cth\u003e#\u003c/th\u003e\n            \u003cth\u003eProblem\u003c/th\u003e\n            \u003cth colspan=\"2\"\u003eSolution\u003c/th\u003e\n        \u003c/tr\u003e\n    \u003c/thead\u003e\n    \u003ctbody\u003e\n        \u003ctr\u003e\n            \u003ctd\u003e1\u003c/td\u003e\n            \u003ctd\u003eMinimum deletions to make valid parentheses\u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://github.com/djeada/Algorithms-And-Data-Structures/tree/master/src/brain_teasers/python/deletions_to_make_valid_parentheses\"\u003ePython\u003c/a\u003e\u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://github.com/djeada/Algorithms-And-Data-Structures/tree/master/src/brain_teasers/cpp/deletions_to_make_valid_parentheses\"\u003eCpp\u003c/a\u003e\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd\u003e2\u003c/td\u003e\n            \u003ctd\u003eIs palindrome after at most one char deletion?\u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://github.com/djeada/Algorithms-And-Data-Structures/tree/master/src/brain_teasers/python/is_palindrome_after_char_deletion\"\u003ePython\u003c/a\u003e\u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://github.com/djeada/Algorithms-And-Data-Structures/tree/master/src/brain_teasers/cpp/is_palindrome_after_char_deletion\"\u003eCpp\u003c/a\u003e\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd\u003e3\u003c/td\u003e\n            \u003ctd\u003e\u003ci\u003eK\u003c/i\u003e closest points to origin\u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://github.com/djeada/Algorithms-And-Data-Structures/tree/master/src/brain_teasers/python/k_closest_points\"\u003ePython\u003c/a\u003e\u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://github.com/djeada/Algorithms-And-Data-Structures/tree/master/src/brain_teasers/cpp/k_closest_points\"\u003eCpp\u003c/a\u003e\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd\u003e4\u003c/td\u003e\n            \u003ctd\u003eSubarray sum equals \u003ci\u003eK\u003c/i\u003e\u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://github.com/djeada/Algorithms-And-Data-Structures/tree/master/src/brain_teasers/python/subarray_sum\"\u003ePython\u003c/a\u003e\u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://github.com/djeada/Algorithms-And-Data-Structures/tree/master/src/brain_teasers/cpp/subarray_sum\"\u003eCpp\u003c/a\u003e\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd\u003e5\u003c/td\u003e\n            \u003ctd\u003eAdd numbers given as strings\u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://github.com/djeada/Algorithms-And-Data-Structures/tree/master/src/brain_teasers/python/add_string_numbers\"\u003ePython\u003c/a\u003e\u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://github.com/djeada/Algorithms-And-Data-Structures/tree/master/src/brain_teasers/cpp/add_string_numbers\"\u003eCpp\u003c/a\u003e\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd\u003e6\u003c/td\u003e\n            \u003ctd\u003eDot product of two sparse vectors\u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://github.com/djeada/Algorithms-And-Data-Structures/tree/master/src/brain_teasers/python/sparse_vectors_product\"\u003ePython\u003c/a\u003e\u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://github.com/djeada/Algorithms-And-Data-Structures/tree/master/src/brain_teasers/cpp/sparse_vectors_product\"\u003eCpp\u003c/a\u003e\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd\u003e7\u003c/td\u003e\n            \u003ctd\u003eRange sum of BST \u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://github.com/djeada/Algorithms-And-Data-Structures/tree/master/src/brain_teasers/python/range_sum_of_bst\"\u003ePython\u003c/a\u003e\u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://github.com/djeada/Algorithms-And-Data-Structures/tree/master/src/brain_teasers/cpp/range_sum_of_bst\"\u003eCpp\u003c/a\u003e\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd\u003e8\u003c/td\u003e\n            \u003ctd\u003eProduct of array except self\u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://github.com/djeada/Algorithms-And-Data-Structures/tree/master/src/brain_teasers/python/array_product\"\u003ePython\u003c/a\u003e\u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://github.com/djeada/Algorithms-And-Data-Structures/tree/master/src/brain_teasers/cpp/array_product\"\u003eCpp\u003c/a\u003e\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd\u003e9\u003c/td\u003e\n            \u003ctd\u003eConvert BST to sorted doubly linked list\u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://github.com/djeada/Algorithms-And-Data-Structures/tree/master/src/brain_teasers/python/bst_to_list\"\u003ePython\u003c/a\u003e\u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://github.com/djeada/Algorithms-And-Data-Structures/tree/master/src/brain_teasers/cpp/bst_to_list\"\u003eCpp\u003c/a\u003e\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd\u003e10\u003c/td\u003e\n            \u003ctd\u003eLowest common ancestor of a binary tree\u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://github.com/djeada/Algorithms-And-Data-Structures/tree/master/src/brain_teasers/python/lowest_common_ancestor\"\u003ePython\u003c/a\u003e\u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://github.com/djeada/Algorithms-And-Data-Structures/tree/master/src/brain_teasers/cpp/lowest_common_ancestor\"\u003eCpp\u003c/a\u003e\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd\u003e11\u003c/td\u003e\n            \u003ctd\u003eLRU Cache\u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://github.com/djeada/Algorithms-And-Data-Structures/tree/master/src/brain_teasers/python/lru_cache\"\u003ePython\u003c/a\u003e\u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://github.com/djeada/Algorithms-And-Data-Structures/tree/master/src/brain_teasers/cpp/lru_cache\"\u003eCpp\u003c/a\u003e\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd\u003e12\u003c/td\u003e\n            \u003ctd\u003eRandomize An Array\u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://github.com/djeada/Algorithms-And-Data-Structures/tree/master/src/brain_teasers/python/randomize_array\"\u003ePython\u003c/a\u003e\u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://github.com/djeada/Algorithms-And-Data-Structures/tree/master/src/brain_teasers/cpp/randomize_array\"\u003eCpp\u003c/a\u003e\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd\u003e13\u003c/td\u003e\n            \u003ctd\u003eBinary Tree Right Side View\u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://github.com/djeada/Algorithms-And-Data-Structures/tree/master/src/brain_teasers/python/binary_tree_right_side_view\"\u003ePython\u003c/a\u003e\u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://github.com/djeada/Algorithms-And-Data-Structures/tree/master/src/brain_teasers/cpp/binary_tree_right_side_view\"\u003eCpp\u003c/a\u003e\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd\u003e14\u003c/td\u003e\n            \u003ctd\u003eDesign Browser History\u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://github.com/djeada/Algorithms-And-Data-Structures/tree/master/src/brain_teasers/python/design_browser_history\"\u003ePython\u003c/a\u003e\u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://github.com/djeada/Algorithms-And-Data-Structures/tree/master/src/brain_teasers/cpp/design_browser_history\"\u003eCpp\u003c/a\u003e\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd\u003e15\u003c/td\u003e\n            \u003ctd\u003eScore After Flipping Matrix\u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://github.com/djeada/Algorithms-And-Data-Structures/tree/master/src/brain_teasers/python/score_after_flipping_matrix\"\u003ePython\u003c/a\u003e\u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://github.com/djeada/Algorithms-And-Data-Structures/tree/master/src/brain_teasers/cpp/score_after_flipping_matrix\"\u003eCpp\u003c/a\u003e\u003c/td\u003e\n        \u003c/tr\u003e\n    \u003c/tbody\u003e\n\u003c/table\u003e\n\n## How to Contribute\n\nWe encourage contributions that enhance the repository's value. To contribute:\n\n1. Fork the repository.\n2. Create your feature branch (`git checkout -b feature/AmazingFeature`).\n3. Commit your changes (`git commit -m 'Add some AmazingFeature'`).\n4. Push to the branch (`git push origin feature/AmazingFeature`).\n5. Open a Pull Request.\n\n## References\n\n### Books\n- **Cormen, Thomas H.; Leiserson, Charles E.; Rivest, Ronald L.; Stein, Clifford**  \n  *Introduction to Algorithms, 3rd Edition (The MIT Press)*  \n  [Amazon Link](https://amzn.to/4liRr12)\n\n- **Halim, Steven**  \n  *Competitive Programming 3*  \n  [Amazon Link](https://amzn.to/43H2KtM)\n\n- **Karumanchi, Narasimha**  \n  *Data Structures and Algorithms Made Easy: Data Structures and Algorithmic Puzzles*  \n  [Amazon Link](https://amzn.to/4jbJZCY)\n\n- **Kernighan, Brian; Ritchie, Dennis**  \n  *The C Programming Language*  \n  [Amazon Link](https://amzn.to/3FWJxKM)\n\n- **Skiena, Steven; Revilla, Miguel**  \n  *Programming Challenges: The Programming Contest Training Manual*  \n  [Amazon Link](https://amzn.to/44aL75A)\n\n- **Laaksonen, Antti**  \n  *Guide to Competitive Programming: Learning and Improving Algorithms Through Contests (Undergraduate Topics in Computer Science)*  \n  [Amazon Link](https://amzn.to/4cDo3Pr)\n\n- **Nimajneb, Nite**  \n  *The Hitchhiker’s Guide to the Programming Contests*\n\n- **Prasad, L. V. Narashima; Patro, E. Kishna Rao**  \n  *Lecture Notes on Data Structures using C*\n\n### Online Courses and Resources\n- [Stanford CS Library](http://cslibrary.stanford.edu/)\n- [Stanford Introduction to Programming Contests](http://stanford.edu/class/cs97si/)\n- [MIT OCW: Advanced Data Structures - Spring 2012](https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-851-advanced-data-structures-spring-2012/)\n- [MIT OCW: Introduction to Computational Thinking and Data Science - Fall 2016](https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-0002-introduction-to-computational-thinking-and-data-science-fall-2016/lecture-slides-and-files/index.htm)\n- [Data Structures and Algorithms by University of Birmingham](https://www.cs.bham.ac.uk/~jxb/DSA/)\n- [UC Irvine - Data Structures and Algorithms](https://www.ics.uci.edu/~eppstein/161/syl.html)\n- [Columbia University - Old Computer Science Courses](http://www.columbia.edu/~cs2035/oldcourses.html)\n- [University of Auckland - Computer Science Lectures](https://www.cs.auckland.ac.nz/courses/compsci220s1t/lectures/lecturenotes/GG-lectures/)\n- [UC Berkeley - Data Structures, Spring 2019](https://sp19.datastructur.es/)\n- [KTH Royal Institute of Technology - Problem Solving and Programming under Pressure](https://www.csc.kth.se/~viggo/problemlist)\n- [CP Algorithms](https://cp-algorithms.com/)\n- [Computational Geometry by Kent State University](https://www.personal.kent.edu/~rmuhamma/Compgeometry/compgeom.html)\n- [CodeAhoy - Learn C Programming](https://codeahoy.com/learn/cprogramming/toc/)\n\n## License\n\nThis project is licensed under the [MIT License](LICENSE) - see the LICENSE file for details.\n\n## Star History\n\n[![Star History Chart](https://api.star-history.com/svg?repos=djeada/Algorithms-And-Data-Structures\u0026type=Date)](https://star-history.com/#djeada/Algorithms-And-Data-Structures\u0026Date)\n\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdjeada%2Falgorithms-and-data-structures","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdjeada%2Falgorithms-and-data-structures","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdjeada%2Falgorithms-and-data-structures/lists"}