A comprehensive collection of algorithmic templates, data structures, and problem solutions for competitive programming and technical interviews.
AdvancedTechniques.py- Mo's Algorithm, advanced optimization techniquesAdvancedDSA.py- Segment Trees with Lazy Propagation, advanced data structuresDp.py- Dynamic Programming patterns including TSP, Digit DP, and Bitmask DPGraph.py- Graph algorithms (Dijkstra, Floyd-Warshall, 0-1 BFS, etc.)String.py- String algorithms including KMP, pattern matchingSlidingWindow.py- Sliding window techniques and patterns
mySolutions/- Directory containing solutions to specific LeetCode problems- Find Edges in Shortest Paths
- Maximize Subarray Sum After Removing All Occurrences of One Element
- Number of Distinct Roll Sequences
- Paint House III
- Swim in Rising Water
- Lazy Propagation Segment Tree - Efficient range updates and queries
- Mo's Algorithm - Square root decomposition for offline queries
- Graph Algorithms - Complete implementation of shortest path algorithms
- Bitmask DP - Traveling Salesman Problem (TSP) variations
- Digit DP - Count numbers with specific properties
- Set Cover Problems - Minimum actions to cover all positions
- KMP Algorithm - Efficient pattern matching
- Advanced String Processing - Multiple string manipulation techniques
- Dijkstra's Algorithm - Single-source shortest path
- Floyd-Warshall - All-pairs shortest path
- 0-1 BFS - Specialized BFS for binary weights
Each Python file contains well-documented classes and functions that can be directly imported and used:
from AdvancedDSA import LazySegTree
from Graph import Solution as GraphSolution
from Dp import Solution as DPSolution
# Example: Using Lazy Segment Tree
arr = [1, 2, 3, 4, 5]
seg_tree = LazySegTree(arr)
seg_tree.range_add(0, 2, 10) # Add 10 to range [0, 2]
result = seg_tree.range_sum(1, 3) # Query sum in range [1, 3]
# Example: Using Dijkstra's algorithm
graph_solver = GraphSolution()
edges = [(0, 1, 2), (1, 2, 3), (0, 2, 6)]
distances = graph_solver.dijkstra(3, edges, 0)- Competitive Programmers preparing for contests like Codeforces, AtCoder
- Software Engineers preparing for technical interviews at FAANG companies
- Students learning advanced algorithms and data structures
- Anyone looking to improve their problem-solving skills
- Shortest Path Algorithms
- Graph Traversal Techniques
- Specialized BFS/DFS variants
- Classical DP patterns
- Optimization techniques
- State space reduction methods
=======
- travelling salesmen problem
- Range Query Data Structures
- Efficient Update Mechanisms
- Square Root Decomposition
- Pattern Matching
- String Hashing
- Advanced String Algorithms
- Python 3.7+
- Basic understanding of algorithms and data structures
- Familiarity with competitive programming concepts
Feel free to contribute by:
- Adding new algorithm templates
- Optimizing existing implementations
- Adding more problem solutions
- Improving documentation
This project is open source and available under the MIT License.
- LeetCode for providing an excellent platform for practicing algorithms
- The competitive programming community for sharing knowledge and techniques
| 2706-buy-two-chocolates |
| 3764-maximum-sum-with-at-most-k-elements |
| 4005-maximum-total-subarray-value-i |
| 0004-median-of-two-sorted-arrays |
| 0023-merge-k-sorted-lists |
| 0148-sort-list |
| 0169-majority-element |
| 0190-reverse-bits |
| 0191-number-of-1-bits |
| 0347-top-k-frequent-elements |
| 1014-k-closest-points-to-origin |
| 0169-majority-element |
| 0347-top-k-frequent-elements |
| 1603-design-parking-system |
| 2442-count-number-of-distinct-integers-after-reverse-operations |
| 0054-spiral-matrix |
| 0735-asteroid-collision |
| 1603-design-parking-system |
| 1929-concatenation-of-array |
| 2154-keep-multiplying-found-values-by-two |
| 0239-sliding-window-maximum |
| 0658-find-k-closest-elements |
| 0713-subarray-product-less-than-k |
| 0940-fruit-into-baskets |
| 0039-combination-sum |
| 0040-combination-sum-ii |
| 0078-subsets |
| 0090-subsets-ii |
| 0216-combination-sum-iii |
| 0239-sliding-window-maximum |
| 0933-number-of-recent-calls |
| 0239-sliding-window-maximum |
| 0078-subsets |
| 0090-subsets-ii |
| 0190-reverse-bits |
| 0191-number-of-1-bits |
| 0895-shortest-path-to-get-all-keys |
| 1018-binary-prefix-divisible-by-5 |
| 0200-number-of-islands |
| 0827-making-a-large-island |
| 1753-path-with-minimum-effort |
| 0230-kth-smallest-element-in-a-bst |
| 0538-convert-bst-to-greater-tree |
| 0700-search-in-a-binary-search-tree |
| 0703-kth-largest-element-in-a-stream |
| 0799-minimum-distance-between-bst-nodes |
| 1014-k-closest-points-to-origin |
| 0347-top-k-frequent-elements |
| 1014-k-closest-points-to-origin |
| 2443-sum-of-number-and-its-reverse |
| 0295-find-median-from-data-stream |
| 0703-kth-largest-element-in-a-stream |
| 0933-number-of-recent-calls |
| 1352-product-of-the-last-k-numbers |
| 1656-design-an-ordered-stream |
| 0705-design-hashset |
| 0706-design-hashmap |
| 0347-top-k-frequent-elements |
| 0380-insert-delete-getrandom-o1 |
| 0002-add-two-numbers |
| 0021-merge-two-sorted-lists |
| 0050-powx-n |
| 0206-reverse-linked-list |
| 0234-palindrome-linked-list |
| 0023-merge-k-sorted-lists |
| 0148-sort-list |
| 0430-flatten-a-multilevel-doubly-linked-list |
| 0128-longest-consecutive-sequence |