Welcome to the "30 Days of Data Structures and Algorithms using Python" repository! This repository contains a comprehensive 30-day plan for learning data structures and algorithms using the Python programming language.
-
Day 1: Review the basics of Python programming
- Data types
- Control structures
- Functions.
-
Day 2: Basic Data Structures in Python like List, Tuple
- List Operations
- Tuple Operations
- Practice Problems
-
Day 3: Advanced Data Structures in Python like Dictionaries
- Operations on Dictionary
- Practice Problems
-
Day 4: Advanced Data Structures in Python like Set
- Operations on Set
- Practice Problems
-
Day 5: Basic complexity analysis and big-O notation
-
Day 6: Stacks and Queues
-
Day 7: Linked List and Its Types
-
Day 8: Operations on Linked List
-
Day 9: Sorting Algorithms like bubble sort, insertion sort, and selection sort
-
Day 10: Practice implementing and analyzing time and space complexity of Sorting Algorithms
-
Day 11: More Advanced Sorting algorithms like merge sort and quick sort
-
Day 12: Practice implementing and analyzing time and space complexity of sorting algorithms.
-
Day 13: Searching algorithms like linear search and binary search, and
-
Day 14: Practice implementing and analyzing the time and space complexity of Searching Algorithms
-
Day 15: Recursion and practice solving problems.
-
Day 16: Dynamic programming
-
Day 17: Practice solving problems using dynamic programming.
-
Day 18: Greedy algorithms
-
Day 19: Practice solving problems using greedy algorithms.
-
Day 20: Backtracking
-
Day 21: Trees
- Binary Trees
- Binary Search Trees
-
Day 22: Heaps
- MinHeap
- MaxHeap
-
Day 23: Graph data structures
- Adjacency List
- Adjacency matrix representations.
-
Day 24: Graph traversal algorithms
- Depth-first search
- Breadth-first search
- Practice Problems
-
Day 25: Minimum Spanning Tree algorithms
- Kruskal's algorithm
- Prim's algorithm
- Practice Problems
-
Day 26: Shortest path algorithms
- Dijkstra's algorithm
- Bellman-Ford algorithm
- Practice Problems
-
Day 27: AVL trees
-
Day 28: Hash Tables
-
Day 29: Topological Sorting
-
Day 30: Revision and Conclusion
This repository is organized by day, with each day containing a set of exercises and a corresponding solution in the form of a Jupyter notebook. To get the most out of this roadmap, we recommend that you follow the plan in order and try to complete the exercises on your own before looking at the solutions.
- Python 3.x
- Jupyter Notebook
We welcome contributions to this repository! If you have an idea for an exercise or a solution, please feel free to submit a pull request.
This roadmap is inspired by the "Cracking the Coding Interview" book and the "Data Structures and Algorithms in Python" course on Coursera.