Algorithms
Algorithms are step by step procedures that are used for solving a computational problem. An algorithm is different from a program in that algorithms are used during the Software-design-phase. An algorithm should be independent of programming languages and are analyzed for performance. In order to design an algorithm, a designer must have domain knowledge of the problem that they are attempting to solve.
Notes
Two pointers
Traverse from right
Topological sort
Super-linear time functions
Sorting and searching
Sliding window
Recursion
Rabin-Karp
Quadratic time functions
Logarithmic time functions
Linear time functions
KMP
Factorial time functions
Exponential time functions
Dynamic programming
Depth first search
Cubic Time Functions
Constant time functions
Breadth first search
Binary search