Who Should Take This Course
Explore who this course is designed for and understand how it helps intermediate programmers prepare for challenging coding interviews and contests. Learn to identify dynamic programming problems, apply the right patterns, and design efficient solutions while building foundational skills in data structures and algorithmic concepts.
We'll cover the following...
Intended audience
Whether you are preparing for a coding interview, a speed programming contest, or just want to improve your coding skills, this course is for you.
Many problems require an exhaustive search through the solution space. These are some of the hardest questions in coding interviews, often showing up in the second or third round. Many of them are best tackled using dynamic programming techniques that radically improve the runtime efficiency of the solution.
This course will walk you through some of the most useful dynamic programming patterns, so that you get sufficient practice to:
Recognize a problem as a candidate for a dynamic programming solution.
Recognize the particular dynamic programming pattern that is best suited to solve it.
Break down the problem into subproblems.
Design the algorithm to solve individual subproblems and merge their solutions.
Prerequisites
You’ll need to have some familiarity with the following data structures:
- Arrays
- 2-D Arrays
- 3-D Arrays
- Stacks
- Linked lists
- Queues
- Vectors
- Hash maps
- Trees
In addition, you’ll need to know the basics of programming, recursion, wrapper functions, and object-oriented programming. Lastly, you’ll need to be familiar with Big-O notation for complexity analysis.