A type of substitution cipher in which each letter in the plaintext is replaced by a letter some fixed number of positions down the alphabet.

A sorting algorithm that picks an element as a pivot and partitions the given array around the picked pivot, sometimes called partition-exchange sort.

Queues are specifically designed to operate in a FIFO context, where elements are inserted into one end of the container and extracted from the other.

It's important to learn basic data structures inside out, otherwise understanding higher level structures will be difficult.

A time and space efficient probabilistic data structure designed to test whether an element is present in a set.

Often a solution to a problem in competitive programming is a combination of well-known methods and new insights.

An optimization over plain recursion when we cache the results of subproblems to reduce time complexity from exponetial to polynomial.

An algorithm created by Richard M. Karp and Michael O. Rabin that uses hashing to find any one of a set of pattern strings in a text.

Big-O notation gives you a rough indication of the running time of an algorithm and the amount of memory it uses.

A hash function used in Rabin–Karp's string search algorithm.