Specialized course to teach you how to solve recursive and dynamic programming problems in coding interviews

What you will learn

Have an intuitive framework that can be used to solve recursive you have not seen before

Understand two main ways of thinking about recursive problems: self-similar or decision trees

Know when and how to apply dynamic programming optimization to recursive algorithms

Solve recursive and dynamic programming problems in coding interviews

Description

When I was preparing for coding interviews a while back, I found recursion and dynamic programming to be among the hardest topics covered. It felt like it took me weeks to get good at solving these types of problems. After I finished preparing for interviews, I thought there must be an easier way for someone to learn how to solve these types of problems, so they can learn this much quicker. After solving more than 100 recursive and dynamic programming problems, I created a problem-solving framework that you can use to solve these types of problems.

This course teaches you this framework by first splitting up all recursive algorithms into two types: self-similar algorithms and decision tree algorithms. Self-similar algorithms solve problems where there is an easy to see self-similar relationship with the problem itself we are solving for, and decision tree algorithms solve problems by ‘trying’ every possible decision sequence in a system. We will spend time building a strong foundation on how to solve problems with recursion (even problems that are typically referred to as dynamic programming problems), and then, with a strong foundation, we will learn how to improve our recursive algorithms with dynamic programming.


Get Instant Notification of New Courses on our Telegram channel.


Prerequisites:

  1. The course uses Python, requiring only a basic understanding of the language.
  2. A basic understanding of non-recursive space and time complexity.
  3. A basic understanding of non-recursive data structures and algorithms, such as hash tables and tree structures, is required.
English
language

Content

Recursion Basics

Self-Similarity
Recursion
Intro to Recursive Algorithms
Fibonacci Number
Decision Trees
Big O Space and Time Complexity of Recursive Algorithms
Two Types of Recursive Algorithms

Self-Similar Algorithms

Intro to Self-Similar Algorithms
Gauss Sum
Self-Similar Tree Algorithms
Max Depth
Max Path Sum
Self-Similar Thief Algorithms
End of Chain Algorithms
Length of Longest Increasing Subsequence

Decision Tree Algorithms

Intro to Decision Tree Algorithms
Unique Paths
Backtracking Algorithms
N Queens
Summation Algorithms
Ways to Make Change – permutation
Permutations and Combinations
Ways to Make Change – combination

Dynamic Programming

Intro to Dynamic Programming
Lazy House Robber Decision Tree Algorithm
Lazy House Robber Self-Similar Algorithm
Lazy House Robber
Overlapping Subproblems and Memoization
Tabulation and Recursive Algorithm Unification
Lazy House Robber (Dynamic Programming)
Big O Space and Time Complexity of Dynamic Programming
Tabulation Space Complexity Improvement
Fibonacci Number (Tabulation)
Length of Longest Increasing Subsequence (Tabulation)
Unique Paths (Memoization)
Ways to Make Change – combination (Tabulation)