Welcome to the Algorithms-Python repository! This is a work-in-progress collection of algorithm and data structure problems, along with their solutions implemented in Python. The aim is to provide a comprehensive resource for learning and practicing algorithms, catering to both beginners and seasoned developers looking to brush up on their skills.
To get started, simply clone the repository:
git clone https://github.com/AjeshRPai/Algorithms-Python.git
cd Algorithms-Python
Explore the different solutions provided in the respective topic directories, and feel free to contribute by adding new solutions, optimizing existing code, or enhancing the documentation.
The repository is organized by topic, covering a wide range of algorithms and data structures. Here's a list of topics currently included:
- Problems related to searching, sorting, and manipulation of arrays.
- Solutions for problems that involve decision trees and state-space search using backtracking techniques.
- Implementation and operations on binary search trees, including insertion, deletion, and traversal methods.
- Binary tree problems, focusing on traversal techniques and tree manipulation.
- Problems involving bit manipulation for efficient computation.
- Solutions utilizing dynamic programming to optimize recursive problems with overlapping subproblems.
- Implementation of well-known algorithms in computer science, at present it contains only djikstra algorithm.
- Graph representation, traversal algorithms (BFS, DFS), and shortest path problems.
- Problems solvable through greedy methods, where local optimal choices lead to a globally optimal solution.
- Implementation and problems involving heaps, such as priority queues and heap sort.
- Linked list operations, including singly and doubly linked list manipulations.
- Miscellaneous logical problems and puzzles solved using various algorithmic approaches.
- Mathematical problems and geometric algorithm implementations.
- Techniques for solving problems that involve maintaining a subset of items in a sliding window format.
- Various sorting techniques, including comparisons and non-comparison based sorts.
- Stack operations and problems, including infix-to-postfix conversion, balanced parentheses, etc.
- String manipulation, pattern matching, and other string-related algorithm problems.
- Two-pointer techniques applied to array and string problems for efficient solutions.
- Add more advanced algorithms and data structures.
- Enhance documentation with detailed explanations of each solution.
- Provide time and space complexity analysis for each solution.
For any questions or suggestions, feel free to reach out via email.
Feel free to update this README as new topics are added or changes are made to the structure of the repository!