0% completed

This course categorizes coding interview problems into a set of **27 patterns**. Each pattern will be a complete tool - consisting of data structures, algorithms, and analysis techniques - to solve a specific category of problems. The goal is to develop an understanding of the underlying pattern, so that, we can apply that pattern to solve other problems.

We have chosen each problem carefully such that it not only maps to the same pattern but also presents different constraints. Overall, the course has around **200 problems** mapped to 22 patterns.

The problems solved under these patterns use a varied set of algorithmic techniques. We will make use of **Breadth-First Search** and **Depth-First Search** to solve problems related to **Trees and Graphs**. Similarly, we will also cover **Dynamic Programming, Backtracking, Recursion, Greedy algorithms, and Divide & Conquer**.

We will start with a brief introduction of each pattern before jumping onto the problems. Under each pattern, the first problem will explain the underlying pattern in detail to build the concepts that can be applied to later problems. The later problems will focus on the different constraints each problem presents and how our algorithm needs to change to handle them.

Let’s start with some **warmup questions** and then move on to our first pattern **Two Pointers**.