
This course includes our updated coding exercises so you can practice your skills as you learn.
See a demo
Test Case Website to Solve all presented problems in this course: https://testcasesdp.herokuapp.com/
Identify and download language-specific requirements for Java, Python, and JavaScript, including the Java SDK and an IDE, Python runtimes, and noji us to run JavaScript.
Explore how dynamic programming optimizes the fibonacci sequence by replacing exponential recursive calls with base cases F(0)=0 and F(1)=1, using normalization and tabulation.
Switch from memorisation to tabulation for the fibonacci problem, using a bottom-up dynamic programming array to store values and avoid stack overflow.
The lecture demonstrates a dynamic programming approach to making change, using two nested loops to update the minimum number of bills for each amount by comparing current and new solutions.
Implement a Java dynamic programming solution that computes the minimum number of bills for a given amount using a dp array and update logic, returning -1 if impossible.
Implement a python dynamic programming solution to the coin change problem, initializing a min-coins list with infinity, updating with nested loops, and returning -1 when no solution exists.
Write pseudocode to solve a dynamic programming coin change problem by iterating bills, updating the number of ways for each amount, and validating with an example before implementing.
implement a java dynamic programming approach to count ways to make an amount with given bills. initialize ways[0]=1, update with each bill, and validate with amount 5 and bills 1,2,3,4.
JavaScript programming to count ways to make a target amount with given bill denominations. Use a ways array, set ways[0] = 1, then update for each bill and return ways[amount].
Implement a Python function to compute the number of ways to make a target amount using given bills, updating a ways list with for loops and printing the results.
This lecture introduces the knapsack problem, compares fractional and discrete versions, and shows dynamic programming as the solution, including unlimited quantity and without repetition cases with weights and values.
Solve the unbounded knapsack problem using dynamic programming with an array to maximize value for a given weight, demonstrating step-by-step item combinations and paving the way for pseudocode.
Explore the knapsack problem with a dynamic programming approach, defining value and weight arrays and a dp table of size W+1, and implement the nested loops to update optimal solutions.
Explore implementing the knapsack problem in JavaScript with a dynamic programming approach. Build a knapsack function that processes weights and values to compute the maximum value for a given capacity.
Explore solving the knapsack with repetition in Python by implementing a knapsack function with weights and values, using a DP list and nested loops to maximize value.
Explore the knapsack without repetition problem and build a two-dimensional dynamic programming solution, contrasting it with the unlimited-quantity version, illustrated by a weight-10 example that yields 57.
Build a two-dimensional dynamic programming matrix to solve a weight-based item problem. Initialize zeros, loop through items and weights, and update by including or excluding items for a maximum value.
Implement a JavaScript solution for the knapsack without repetition problem by building and filling a dynamic programming table with weights, values, and capacity.
Explore counting subsets that sum to a target using recursion, illustrated with [1,3,4,5] and target 9. Identify two subsets (1,3,5) and (4,5) and preview dynamic programming with memorization.
Implement a JavaScript dynamic programming function using a memo map to count the number of ways to reach a target total by including or excluding list elements.
Implement a Python recursive dynamic programming function with memoization to count subsets that sum to a target, using base cases for zero, negatives, and exhausted indices.
Explore the longest common subsequent problem through a recursive walkthrough, covering the base case and branching, analyze exponential time, and outline dynamic programming optimization with pseudocode.
This lecture demonstrates a dynamic programming tabulation approach to the longest common subsequence, building a 2d matrix with zeros and diagonal matches, with time complexity O(x*y).
Learn to implement the longest common subsequence length in Java using dynamic programming, including a public static function, a dp matrix, and the recurrence.
Implement a JavaScript function for the longest common subsequence using dynamic programming, building an X+1 by Y+1 matrix, initializing edges to zero, and returning the result.
Explore implementing the longest common subsequence using Python with a dynamic programming matrix, including base cases, diagonal matches, and returning the final subsequence matrix for LCS results.
This video demonstrates optimizing a recursive approach with dynamic programming to compute the longest increasing subsequence, using a per-index array and nested loops with quadratic time and linear space.
Learn a Java implementation of the longest increasing subsequence using a public static function, initialize an array, and update values with nested loops to compute the maximum.
Implement a JavaScript function to compute the longest increasing subsequence using dynamic programming, initialize arrays and indices, iterating i and j, and verify results on a sample data list.
Implement the longest increasing subsequence in Python using dynamic programming, defining a LIS function, updating a lengths array, and returning the maximum length with a worked example.
Recap how we use Fibonacci sequence to define memorization and tabulation, draw trees and matrices with pseudocode, solve dynamic programming algorithms by hand, and implement in Java, JavaScript, and Python.
In this course, you are going to learn about one of the most popular programming topics, dynamic programming. This topic is known as one of the most difficult topics in the programming world. However, in this course, we are going to simplify it and deeply learn the basis on which it stands.
What we are going to do is to start by introducing and defining dynamic programming, and present two popular techniques that are generally used which are memoization, and tabulation. We are going to learn about the differences between them, and when and where to use each one of them.
Then, we are going to solve some of the most famous dynamic programming problems by a detailed explanation of the problem, followed by an example walkthrough. Then, we come up with a pseudo-code, and finally we implement our code using three languages, Java, JavaScript, and Python.
This course contains multiple quizzes and coding exercises that will help you deeply understand each of the topics presented.
With that being said, I hope you enjoy this course, and I would love to help you make your dynamic programming experience more fun, and enjoyable as much as possible!
Good Luck and Enjoy!