Skip to content

ATMmonitor667/Leetcode-Guide

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

964 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🚀 LeetCode Guide

A comprehensive collection of algorithmic templates, data structures, and problem solutions for competitive programming and technical interviews.

📁 Repository Structure

Core Algorithm Templates

  • AdvancedTechniques.py - Mo's Algorithm, advanced optimization techniques
  • AdvancedDSA.py - Segment Trees with Lazy Propagation, advanced data structures
  • Dp.py - Dynamic Programming patterns including TSP, Digit DP, and Bitmask DP
  • Graph.py - Graph algorithms (Dijkstra, Floyd-Warshall, 0-1 BFS, etc.)
  • String.py - String algorithms including KMP, pattern matching
  • SlidingWindow.py - Sliding window techniques and patterns

Problem Solutions

  • 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

🛠️ Features

Advanced Data Structures

  • 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

Dynamic Programming Patterns

  • Bitmask DP - Traveling Salesman Problem (TSP) variations
  • Digit DP - Count numbers with specific properties
  • Set Cover Problems - Minimum actions to cover all positions

String Algorithms

  • KMP Algorithm - Efficient pattern matching
  • Advanced String Processing - Multiple string manipulation techniques

Graph Theory

  • Dijkstra's Algorithm - Single-source shortest path
  • Floyd-Warshall - All-pairs shortest path
  • 0-1 BFS - Specialized BFS for binary weights

📝 Usage

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)

🎯 Target Audience

  • 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

📚 Algorithm Categories

Graph Algorithms

  • Shortest Path Algorithms
  • Graph Traversal Techniques
  • Specialized BFS/DFS variants

Dynamic Programming

  • Classical DP patterns
  • Optimization techniques
  • State space reduction methods

=======

  • travelling salesmen problem

Advanced Data Structures

  • Range Query Data Structures
  • Efficient Update Mechanisms
  • Square Root Decomposition

String Processing

  • Pattern Matching
  • String Hashing
  • Advanced String Algorithms

🔧 Prerequisites

  • Python 3.7+
  • Basic understanding of algorithms and data structures
  • Familiarity with competitive programming concepts

🤝 Contributing

Feel free to contribute by:

  1. Adding new algorithm templates
  2. Optimizing existing implementations
  3. Adding more problem solutions
  4. Improving documentation

📄 License

This project is open source and available under the MIT License.

🌟 Acknowledgments

  • LeetCode for providing an excellent platform for practicing algorithms
  • The competitive programming community for sharing knowledge and techniques

LeetCode Topics

Array

0001-two-sum
0004-median-of-two-sorted-arrays
0011-container-with-most-water
0015-3sum
0016-3sum-closest
0039-combination-sum
0040-combination-sum-ii
0041-first-missing-positive
0046-permutations
0047-permutations-ii
0054-spiral-matrix
0056-merge-intervals
0066-plus-one
0073-set-matrix-zeroes
0078-subsets
0090-subsets-ii
0128-longest-consecutive-sequence
0150-evaluate-reverse-polish-notation
0169-majority-element
0200-number-of-islands
0216-combination-sum-iii
0217-contains-duplicate
0239-sliding-window-maximum
0268-missing-number
0303-range-sum-query-immutable
0334-increasing-triplet-subsequence
0347-top-k-frequent-elements
0349-intersection-of-two-arrays
0380-insert-delete-getrandom-o1
0419-battleships-in-a-board
0448-find-all-numbers-disappeared-in-an-array
0475-heaters
0485-max-consecutive-ones
0523-continuous-subarray-sum
0525-contiguous-array
0540-single-element-in-a-sorted-array
0560-subarray-sum-equals-k
0658-find-k-closest-elements
0695-max-area-of-island
0705-design-hashset
0706-design-hashmap
0713-subarray-product-less-than-k
0735-asteroid-collision
0744-find-smallest-letter-greater-than-target
0747-largest-number-at-least-twice-of-others
0827-making-a-large-island
0895-shortest-path-to-get-all-keys
0922-sort-array-by-parity-ii
0940-fruit-into-baskets
0973-k-closest-points-to-origin
0974-subarray-sums-divisible-by-k
0980-unique-paths-iii
1014-k-closest-points-to-origin
1018-binary-prefix-divisible-by-5
1200-minimum-absolute-difference
1217-minimum-cost-to-move-chips-to-the-same-position
1219-path-with-maximum-gold
1352-product-of-the-last-k-numbers
1365-how-many-numbers-are-smaller-than-the-current-number
1381-design-a-stack-with-increment-operation
1470-shuffle-the-array
1476-subrectangle-queries
1499-max-value-of-equation
1561-maximum-number-of-coins-you-can-get
1631-path-with-minimum-effort
1642-furthest-building-you-can-reach
1656-design-an-ordered-stream
1695-maximum-erasure-value
1753-path-with-minimum-effort
1833-find-the-highest-altitude
1861-rotating-the-box
1929-concatenation-of-array
2099-find-subsequence-of-length-k-with-the-largest-sum
2154-keep-multiplying-found-values-by-two
2441-largest-positive-integer-that-exists-with-its-negative
2442-count-number-of-distinct-integers-after-reverse-operations
2706-buy-two-chocolates
2966-divide-array-into-arrays-with-max-difference
3747-maximum-difference-between-adjacent-elements-in-a-circular-array
3764-maximum-sum-with-at-most-k-elements
3928-split-and-merge-array-transformation
4005-maximum-total-subarray-value-i

Hash Table

0001-two-sum
0041-first-missing-positive
0073-set-matrix-zeroes
0128-longest-consecutive-sequence
0141-linked-list-cycle
0142-linked-list-cycle-ii
0146-lru-cache
0160-intersection-of-two-linked-lists
0169-majority-element
0217-contains-duplicate
0268-missing-number
0347-top-k-frequent-elements
0349-intersection-of-two-arrays
0355-design-twitter
0380-insert-delete-getrandom-o1
0448-find-all-numbers-disappeared-in-an-array
0508-most-frequent-subtree-sum
0523-continuous-subarray-sum
0525-contiguous-array
0560-subarray-sum-equals-k
0705-design-hashset
0706-design-hashmap
0863-all-nodes-distance-k-in-binary-tree
0940-fruit-into-baskets
0974-subarray-sums-divisible-by-k
0987-vertical-order-traversal-of-a-binary-tree
1365-how-many-numbers-are-smaller-than-the-current-number
1656-design-an-ordered-stream
1695-maximum-erasure-value
2034-stock-price-fluctuation
2099-find-subsequence-of-length-k-with-the-largest-sum
2154-keep-multiplying-found-values-by-two
2441-largest-positive-integer-that-exists-with-its-negative
2442-count-number-of-distinct-integers-after-reverse-operations
3928-split-and-merge-array-transformation

Greedy

0011-container-with-most-water
0334-increasing-triplet-subsequence
1217-minimum-cost-to-move-chips-to-the-same-position
1561-maximum-number-of-coins-you-can-get
1642-furthest-building-you-can-reach
2706-buy-two-chocolates
2966-divide-array-into-arrays-with-max-difference
3764-maximum-sum-with-at-most-k-elements
4005-maximum-total-subarray-value-i

Sorting

0015-3sum
0016-3sum-closest
0047-permutations-ii
0056-merge-intervals
0148-sort-list
0169-majority-element
0217-contains-duplicate
0268-missing-number
0295-find-median-from-data-stream
0347-top-k-frequent-elements
0349-intersection-of-two-arrays
0475-heaters
0658-find-k-closest-elements
0747-largest-number-at-least-twice-of-others
0922-sort-array-by-parity-ii
0973-k-closest-points-to-origin
0987-vertical-order-traversal-of-a-binary-tree
1014-k-closest-points-to-origin
1200-minimum-absolute-difference
1305-all-elements-in-two-binary-search-trees
1365-how-many-numbers-are-smaller-than-the-current-number
1561-maximum-number-of-coins-you-can-get
2099-find-subsequence-of-length-k-with-the-largest-sum
2154-keep-multiplying-found-values-by-two
2441-largest-positive-integer-that-exists-with-its-negative
2646-kth-largest-sum-in-a-binary-tree
2706-buy-two-chocolates
2966-divide-array-into-arrays-with-max-difference
3764-maximum-sum-with-at-most-k-elements

Heap (Priority Queue)

0023-merge-k-sorted-lists
0239-sliding-window-maximum
0295-find-median-from-data-stream
0347-top-k-frequent-elements
0355-design-twitter
0658-find-k-closest-elements
0703-kth-largest-element-in-a-stream
0973-k-closest-points-to-origin
1014-k-closest-points-to-origin
1499-max-value-of-equation
1631-path-with-minimum-effort
1642-furthest-building-you-can-reach
1753-path-with-minimum-effort
2034-stock-price-fluctuation
2099-find-subsequence-of-length-k-with-the-largest-sum
3764-maximum-sum-with-at-most-k-elements

Matrix

0054-spiral-matrix
0073-set-matrix-zeroes
0200-number-of-islands
0419-battleships-in-a-board
0695-max-area-of-island
0827-making-a-large-island
0895-shortest-path-to-get-all-keys
0980-unique-paths-iii
1219-path-with-maximum-gold
1476-subrectangle-queries
1631-path-with-minimum-effort
1753-path-with-minimum-effort
1861-rotating-the-box
3764-maximum-sum-with-at-most-k-elements

Divide and Conquer

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
0973-k-closest-points-to-origin
1014-k-closest-points-to-origin

Counting

0169-majority-element
0347-top-k-frequent-elements
1603-design-parking-system
2442-count-number-of-distinct-integers-after-reverse-operations

Simulation

0054-spiral-matrix
0735-asteroid-collision
1603-design-parking-system
1929-concatenation-of-array
2154-keep-multiplying-found-values-by-two

Binary Search

0004-median-of-two-sorted-arrays
0069-sqrtx
0268-missing-number
0349-intersection-of-two-arrays
0475-heaters
0540-single-element-in-a-sorted-array
0658-find-k-closest-elements
0713-subarray-product-less-than-k
0744-find-smallest-letter-greater-than-target
1631-path-with-minimum-effort
1753-path-with-minimum-effort

Sliding Window

0239-sliding-window-maximum
0658-find-k-closest-elements
0713-subarray-product-less-than-k
0940-fruit-into-baskets
1499-max-value-of-equation
1695-maximum-erasure-value

Prefix Sum

0303-range-sum-query-immutable
0523-continuous-subarray-sum
0525-contiguous-array
0560-subarray-sum-equals-k
0713-subarray-product-less-than-k
0974-subarray-sums-divisible-by-k
1352-product-of-the-last-k-numbers
1833-find-the-highest-altitude

Backtracking

0039-combination-sum
0040-combination-sum-ii
0046-permutations
0047-permutations-ii
0078-subsets
0090-subsets-ii
0113-path-sum-ii
0216-combination-sum-iii
0980-unique-paths-iii
1219-path-with-maximum-gold

Breadth-First Search

0100-same-tree
0102-binary-tree-level-order-traversal
0103-binary-tree-zigzag-level-order-traversal
0112-path-sum
0116-populating-next-right-pointers-in-each-node
0200-number-of-islands
0404-sum-of-left-leaves
0429-n-ary-tree-level-order-traversal
0513-find-bottom-left-tree-value
0515-find-largest-value-in-each-tree-row
0559-maximum-depth-of-n-ary-tree
0617-merge-two-binary-trees
0637-average-of-levels-in-binary-tree
0695-max-area-of-island
0799-minimum-distance-between-bst-nodes
0827-making-a-large-island
0863-all-nodes-distance-k-in-binary-tree
0895-shortest-path-to-get-all-keys
0987-vertical-order-traversal-of-a-binary-tree
1161-maximum-level-sum-of-a-binary-tree
1254-deepest-leaves-sum
1631-path-with-minimum-effort
1753-path-with-minimum-effort
2415-reverse-odd-levels-of-binary-tree
2646-kth-largest-sum-in-a-binary-tree
3928-split-and-merge-array-transformation

Math

0002-add-two-numbers
0007-reverse-integer
0009-palindrome-number
0050-powx-n
0066-plus-one
0069-sqrtx
0150-evaluate-reverse-polish-notation
0268-missing-number
0380-insert-delete-getrandom-o1
0445-add-two-numbers-ii
0523-continuous-subarray-sum
0973-k-closest-points-to-origin
1014-k-closest-points-to-origin
1217-minimum-cost-to-move-chips-to-the-same-position
1352-product-of-the-last-k-numbers
1561-maximum-number-of-coins-you-can-get
2442-count-number-of-distinct-integers-after-reverse-operations
2443-sum-of-number-and-its-reverse

Queue

0239-sliding-window-maximum
0933-number-of-recent-calls
1499-max-value-of-equation

Monotonic Queue

0239-sliding-window-maximum
1499-max-value-of-equation

Bit Manipulation

0078-subsets
0090-subsets-ii
0190-reverse-bits
0191-number-of-1-bits
0268-missing-number
0895-shortest-path-to-get-all-keys
0980-unique-paths-iii
1018-binary-prefix-divisible-by-5

Depth-First Search

0094-binary-tree-inorder-traversal
0100-same-tree
0112-path-sum
0113-path-sum-ii
0116-populating-next-right-pointers-in-each-node
0129-sum-root-to-leaf-numbers
0200-number-of-islands
0230-kth-smallest-element-in-a-bst
0404-sum-of-left-leaves
0419-battleships-in-a-board
0430-flatten-a-multilevel-doubly-linked-list
0437-path-sum-iii
0508-most-frequent-subtree-sum
0513-find-bottom-left-tree-value
0515-find-largest-value-in-each-tree-row
0538-convert-bst-to-greater-tree
0543-diameter-of-binary-tree
0559-maximum-depth-of-n-ary-tree
0617-merge-two-binary-trees
0637-average-of-levels-in-binary-tree
0687-longest-univalue-path
0695-max-area-of-island
0776-n-ary-tree-postorder-traversal
0799-minimum-distance-between-bst-nodes
0827-making-a-large-island
0863-all-nodes-distance-k-in-binary-tree
0872-leaf-similar-trees
0897-increasing-order-search-tree
0904-leaf-similar-trees
0987-vertical-order-traversal-of-a-binary-tree
1022-sum-of-root-to-leaf-binary-numbers
1161-maximum-level-sum-of-a-binary-tree
1254-deepest-leaves-sum
1305-all-elements-in-two-binary-search-trees
1631-path-with-minimum-effort
1753-path-with-minimum-effort
2415-reverse-odd-levels-of-binary-tree

Tree

0094-binary-tree-inorder-traversal
0100-same-tree
0102-binary-tree-level-order-traversal
0103-binary-tree-zigzag-level-order-traversal
0112-path-sum
0113-path-sum-ii
0116-populating-next-right-pointers-in-each-node
0129-sum-root-to-leaf-numbers
0173-binary-search-tree-iterator
0230-kth-smallest-element-in-a-bst
0404-sum-of-left-leaves
0429-n-ary-tree-level-order-traversal
0437-path-sum-iii
0508-most-frequent-subtree-sum
0513-find-bottom-left-tree-value
0515-find-largest-value-in-each-tree-row
0538-convert-bst-to-greater-tree
0543-diameter-of-binary-tree
0559-maximum-depth-of-n-ary-tree
0617-merge-two-binary-trees
0637-average-of-levels-in-binary-tree
0687-longest-univalue-path
0700-search-in-a-binary-search-tree
0703-kth-largest-element-in-a-stream
0776-n-ary-tree-postorder-traversal
0799-minimum-distance-between-bst-nodes
0863-all-nodes-distance-k-in-binary-tree
0872-leaf-similar-trees
0897-increasing-order-search-tree
0904-leaf-similar-trees
0987-vertical-order-traversal-of-a-binary-tree
1022-sum-of-root-to-leaf-binary-numbers
1161-maximum-level-sum-of-a-binary-tree
1254-deepest-leaves-sum
1305-all-elements-in-two-binary-search-trees
2415-reverse-odd-levels-of-binary-tree
2646-kth-largest-sum-in-a-binary-tree

Binary Tree

0094-binary-tree-inorder-traversal
0100-same-tree
0102-binary-tree-level-order-traversal
0103-binary-tree-zigzag-level-order-traversal
0112-path-sum
0113-path-sum-ii
0116-populating-next-right-pointers-in-each-node
0129-sum-root-to-leaf-numbers
0173-binary-search-tree-iterator
0230-kth-smallest-element-in-a-bst
0404-sum-of-left-leaves
0437-path-sum-iii
0508-most-frequent-subtree-sum
0513-find-bottom-left-tree-value
0515-find-largest-value-in-each-tree-row
0538-convert-bst-to-greater-tree
0543-diameter-of-binary-tree
0617-merge-two-binary-trees
0637-average-of-levels-in-binary-tree
0687-longest-univalue-path
0700-search-in-a-binary-search-tree
0703-kth-largest-element-in-a-stream
0799-minimum-distance-between-bst-nodes
0863-all-nodes-distance-k-in-binary-tree
0872-leaf-similar-trees
0897-increasing-order-search-tree
0904-leaf-similar-trees
0987-vertical-order-traversal-of-a-binary-tree
1022-sum-of-root-to-leaf-binary-numbers
1161-maximum-level-sum-of-a-binary-tree
1254-deepest-leaves-sum
1305-all-elements-in-two-binary-search-trees
2415-reverse-odd-levels-of-binary-tree
2646-kth-largest-sum-in-a-binary-tree

Union Find

0200-number-of-islands
0827-making-a-large-island
1753-path-with-minimum-effort

Stack

0094-binary-tree-inorder-traversal
0150-evaluate-reverse-polish-notation
0155-min-stack
0173-binary-search-tree-iterator
0234-palindrome-linked-list
0445-add-two-numbers-ii
0735-asteroid-collision
0776-n-ary-tree-postorder-traversal
0897-increasing-order-search-tree
1381-design-a-stack-with-increment-operation
2130-maximum-twin-sum-of-a-linked-list

Linked List

0002-add-two-numbers
0019-remove-nth-node-from-end-of-list
0021-merge-two-sorted-lists
0023-merge-k-sorted-lists
0116-populating-next-right-pointers-in-each-node
0141-linked-list-cycle
0142-linked-list-cycle-ii
0146-lru-cache
0148-sort-list
0160-intersection-of-two-linked-lists
0206-reverse-linked-list
0234-palindrome-linked-list
0355-design-twitter
0430-flatten-a-multilevel-doubly-linked-list
0445-add-two-numbers-ii
0705-design-hashset
0706-design-hashmap
2130-maximum-twin-sum-of-a-linked-list

Binary Search Tree

0173-binary-search-tree-iterator
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
0897-increasing-order-search-tree
1305-all-elements-in-two-binary-search-trees

Geometry

0973-k-closest-points-to-origin
1014-k-closest-points-to-origin

Quickselect

0347-top-k-frequent-elements
0973-k-closest-points-to-origin
1014-k-closest-points-to-origin

Two Pointers

0011-container-with-most-water
0015-3sum
0016-3sum-closest
0019-remove-nth-node-from-end-of-list
0141-linked-list-cycle
0142-linked-list-cycle-ii
0148-sort-list
0160-intersection-of-two-linked-lists
0234-palindrome-linked-list
0295-find-median-from-data-stream
0349-intersection-of-two-arrays
0475-heaters
0658-find-k-closest-elements
0922-sort-array-by-parity-ii
1861-rotating-the-box
2130-maximum-twin-sum-of-a-linked-list
2441-largest-positive-integer-that-exists-with-its-negative

Enumeration

2443-sum-of-number-and-its-reverse

Design

0146-lru-cache
0155-min-stack
0173-binary-search-tree-iterator
0295-find-median-from-data-stream
0303-range-sum-query-immutable
0355-design-twitter
0380-insert-delete-getrandom-o1
0703-kth-largest-element-in-a-stream
0705-design-hashset
0706-design-hashmap
0933-number-of-recent-calls
1352-product-of-the-last-k-numbers
1381-design-a-stack-with-increment-operation
1476-subrectangle-queries
1603-design-parking-system
1656-design-an-ordered-stream
2034-stock-price-fluctuation

Data Stream

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
2034-stock-price-fluctuation

Hash Function

0705-design-hashset
0706-design-hashmap

Bucket Sort

0347-top-k-frequent-elements

Randomized

0380-insert-delete-getrandom-o1

Recursion

0002-add-two-numbers
0021-merge-two-sorted-lists
0050-powx-n
0206-reverse-linked-list
0234-palindrome-linked-list

Merge Sort

0023-merge-k-sorted-lists
0148-sort-list

Doubly-Linked List

0146-lru-cache
0430-flatten-a-multilevel-doubly-linked-list

Union-Find

0128-longest-consecutive-sequence
0200-number-of-islands
0695-max-area-of-island
1631-path-with-minimum-effort

Counting Sort

1365-how-many-numbers-are-smaller-than-the-current-number

Game Theory

1561-maximum-number-of-coins-you-can-get

Iterator

0173-binary-search-tree-iterator

Ordered Set

2034-stock-price-fluctuation

About

a compilation of leetcode algorithms

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors