ROADMAP
ROADMAP
fastly.hackerearth.com/static/hackerearth/images/
marketing/algorithm_blog/algo-og.jpg"
width="100%">
1. Introduction to Git
2. Introduction to Programming
- Types of languages
- Flowcharts & Pseudocode
- Flow of the program
- Time & Space Complexity
3. Basics of Java
- Array
o Introduction
o Memory management
o Input and Output
o ArrayList Introduction
o Sorting
o Insertion Sort
o Selection Sort
o Bubble Sort
o Count Sort
o Radix Sort
o Searching
o Linear Search
o Binary Search
o Modified Binary Search
o Two Pointer
o Subarray Questions
- Strings
o Introduction
o How Strings work
o Comparison of methods
o Operations in Strings
o StringBuilder in java
- Maths for DSA
o Introduction
What basic data structures and algorithms should one learn before starting
competitive programming?
1.
2. Bit manipulation.
3.
- Union-Find Disjoint Sets.
- Segment Tree.
- Binary Indexed Tree (a.k.a Fenwik Tree).
- Graph.
- Tree
- Skip Lists.
- Some self balanced Binary Search trees (e.g. Red Black Trees).
4.
5.
6. Greedy.
7.
8.
Graphs
o Introduction
o BFS
o DFS
o Working with graph components
o Minimum Spanning Trees
o Kruskal Algorithm
o Prims Algorithm
o Dijkstra’s shortest path algorithm
o Topological Sort
o Bellman ford
o A* pathfinding Algorithm
t basic data structures and algorithms should one learn before starting
petitive programming?
Basic data sturctures (arrays, queues, linked lists, etc.).
manipulation.
Advanced data structures:
on-Find Disjoint Sets.
ment Tree.
ary Indexed Tree (a.k.a Fenwik Tree).
ph.
e
p Lists.
e self balanced Binary Search trees (e.g. Red Black Trees).
Brute force and it's tricks and advanced techniques (such as, pruning, bitmasks, meet in
the middle, iterative deepining etc.)
Binary Search (not only the basic code).
edy.
Dynamic programming and it's tricks and optimisations (Knuth optimisation, convex hull
optimisation, bitmasks, etc.).
Graph algorithms:
- Traversal (DFS & BFS) algorithms and how to use them.
- Finding Connected Components.
- Flood Fill.
- Topological Sorting (the famous algorithm uses DFS but you should also
know Kahn's
algorithm that uses BFS as it has much applications).
- Bipartite Check.
- Finding Strongly Connected Components.
- Kruskal's and Prim's algorithms for finding the Minimum Spanning Tree of a
graph and
the variants of the problem.
- Dijkstra's algorithm for solving the Single Source Shortest Path (SSSP)
Problem with out
negaitive cycles.
- Bellman-Ford's algorithm for solving the SSSP problem with negative sycles.
- Floyd-Warshall's algorithm for solving the All Pairs Shortest Path (APSP)
problem and it's
variants.
- Network Flow problem (all it's algorithms, variants and the problems reducable to it).
9 Mathematics:
- You should be familiar with the BigInteger class in Java (maybe write your
own if you are
in love with C++).
- Some Combinatorics.
- Number Theory (all what you can learn about it).
- Probability Theory.
- Floyd-Cycle detection algorithm.
- Game Theory (especially impartial games and Sprague-Grundy Theorem).
10. Strings:
- Basic Manipulation.
- Z-Algorithm for finding a pattern in a text.
- Knuth-Morris-Pratt Algorithm for finding a pattern in a text.
- Hashing and Rabin-Karp Algorithm for finding a pattern in a text.
- Trie data structure.
- Aho-Corasick Algorithm for finding multiple patterns in a text.
- Suffix Array data structure.
- Suffix Automaton data structure.
11. Computational Geometry Algorithms.
Resources
- Codeforces Candidate Master RoadMap
- DSA Cracker Sheet
- Striver's CP List
- SDE-Problems
- A2OJ
- Competitive Programming Algorithms