This is the project where you can train you algorithmic skills in:
- Pre-requirements and terms (example with minimum in arrays)
- Invariant
- Relaxation of answer
- Optimal answer constructive
- Dynamic programming
- Correctness
- Marker that solution is not exists
- Tail recursion over iteration
- Invariant inversion
- Inclusion Exclusion principle
- Partial sum/Prefix sum
- Bit sets
- Performance testing
Array of integers in ascending order:
- How to find lower bound
- How to find upper bound
- How to find range size
Heap (PriorityQueue)
- siftUp
- siftDown
Single source minimum cost
- Dijkstra
DisjointUnionSet
- Union two
- Check if two are in the same set
- Amount of connected component
- Rank balancing
- Pass zipping
Minimal spanning tree
- Kruskal algo
Binary indexed tree
- Subarray sum query
- Single element modification
Binary indexed tree 2D
- Submatrix sum query
- Single element modification
Pictures was build with this tool Resources:
BIT Naive implementation https://www.youtube.com/watch?v=v_wj_mOAlig
Egor Kulikov yaal
BIT 2D https://www.geeksforgeeks.org/two-dimensional-binary-indexed-tree-or-fenwick-tree/