The worst problem about the Leetcode interview process is that is forcing engineers to memorize instead of thinking. If 20 years ago someone told me that in the future we will be selecting engineers based on a memorization process I would laugh. In a job market where everbody memorizes patterns an algorithms, these kind of breaking a problem in parts explanation is fresh air
i really hate that too. I am a strong advocate for easier problems with more scrutiny on explanation and correctness. There's nothing more I want to see gone that questions that have an easy to remember trick solution and poorly trained interviewers just looking to hear THEIR answer.
@@DecodingIntuition indeed. It probably has a higher recruiting cost but I would rather evaluate the thinking process of a candidate instead of the same candidate faking that thinking process because he grinded that Leetcode exercise
Cleanest DP intuition video on TH-cam, I have watched countless of them but this step by step like exactly how we think during an actual problem solving process is what connected with me. I really wish you make more videos but from the perspective of how a person who is leaning will think and solve it.
This was genuinely mind opening. Thanks for this. It's not often you feel like you a video has made you better off after having watched it. My perspective on problem solving has improved having watched this. Now its all about practice.
DP is hard because the algorithms look like a complete enumeration, especially in optimization problems. Half of the process is to convince yourself that the memorization you've thought of saves enough time in your specific case. This approach with cached complexity simultaneously derives the algorithm (just enumerate every state via recursion) and calculates the complexity for you (the recursive call is O(1)). It is then easier to derive a non-recursive algorithm from the recursive, and the memorization table is a matrix with a dimension for every argument of the recursive call.
To be fair, it is really hard if you don't know that DP is not about drawing arrows on random tables. Once you get comfortable with the idea that you can efficiently use a recurrence relation to simulate all possibilities, coin change really does become as easy as "take the coin or skip the coin" :) I'd really love for him to see this video and see if it changes his mind about it, because he's a smart guy and I'm sure if he knew what dp actually was he wouldn't have spent over an hour on it trying to pass art class
Really just getting started into programming and a friend sent this video to me. I think I got quite a bit of it, but this gives me SO much stuff to go and track down and learn. THANK YOU!
Please, I need you to MAKE MORE VIDEOS. I don't care if it's about the most useless data structure or algorithm of mankind, with this video you show that intuition and the process of building a solution is imperative to understand whatever THE solution to the problem means, even if it's a hard problem. I urge you to keep making videos, you help people like me (too much). I REALLY appreciate the time people like you take to explain any concept. Thank you very much.
@@DecodingIntuitionanother person here - I share one for one, exactly what this person has said. There really is NOT a lot of people on TH-cam that walk through the ENTIRE problem AND process. Please continue making content bro 💪🙏
@@Hellbending That's my goal! I don't just want to tell you why I know a solution works, I want to show how I arrive at it. There's plenty of great content that explains why things work, but I'm here to try to fill the gap for the other :)
I started Programming two months ago with high intent to go competitive. This is my favorite vids as of now that makes me comeback for another watch every 2-3 days or so. Absolutely beautifully taught
THANK YOU, this video is really opened my mind. I have solved 300 problems on Leetcode, and I can solve most DP problems, but my confidence on DP is little. Your process to observe/break down a problem is phenomenal, and I feel like it just should like this all the time. I will share video to all my friend who can code, and just try to solve the two DP problems that I can't solve.
awesome vid, coin change being the example here is a huge bonus for me because that problem has been fucking with my head for a while even after looking up the solution
This video is so good. Not just for DP, but general problem solving. Also, I really appreciate the notes slides you put in the video, that saves a lot of time and helps me understand the content better. Instant sub.
20:28 This meme highlights the main misconception I have had forever, also loved the department of defense trivia. Holy moly the fact that no one ever mentioned or highlighted that recurrence relation != recurrence execution to me before is such a scam. In fact I was made to think recurrence execution is what happened in the call stack (even though I didn't know how physics allowed it). SOOO GLAD to have cleared it up. Drawing down the entire trace graph of calls always got me stuck and felt unintuitive, since I didn't know how my computer processed it. I also got lost when drawing it down. "Decisions are Values to compute once and not task to run every time" THIS QUOTE AND VIDEO IS LIFE CHANGING Its funny I got a non-dev job as a new cs grad, but videos like these are perfect/motivating as I love problem solving and want to keep my skills sharp even if my work right now is in a different field. Since problem solving is a universal skill. Can't wait for the next video since I never truly understood memoization and other space/time optimization that people usually did when solving such DP problems. Or even other LC type problems. I just love that you are focusing on problem solving more than just leetcode, please keep it up!!!! This is a niche (math/cs/leetcode/problem solving) that i always thought lacked good youtube content.
The DP section of this video is good, but the greater value I garnered from this was ACTUALLY applying the breaking-down-the-problem strategies we are taught when approaching leetcode-style problems. These are things I have been told countless times but have struggled to break things down to their core components, but after watching you do it in this video it has really revitalized my confidence. Well earned like and sub, keep up the great work! Would love more videos like this.
This video is amazing! The confidence you express your ideas with, combined with you immediately backing them up, really helps the ideas settle in my head. I especially liked the example problems at the end, after watching the video I had no trouble at all, which is usually not the case for videos claiming that something is "easy". I didn't even especially struggle with dynamic programming in school, but this definitely helped cement my foundations. Thank you!
Please do make these kind of videos more often, I am a software engineer for over a decade now and I feel to go back to roots again just because of this video :)
@@GRAYgauss it's only "not actionable" if people make promises they cannot keep. it's a simple rule of thumb: if you aren't sure you can keep your promise (to the best of your ability within your control), don't promise. extenuating circumstances such as death and traffic apply. for our own sanity, we must assume that lexical and logical ambiguities of promise statements have been previously resolved and agreed upon by all involved parties. for example: Scenario 1 - Alice knows they have (2 + n) chocolates in their chocolate tin, such that n > 0. Alice promises Bob 2 chocolates from their tin. Alice then gives Bob 2 chocolates from their tin. Nobody knowingly made impossible to keep promises, everybody's happy. Scenario 2 - Alice knows they have only 1 chocolate in their chocolate tin. Alice promises Bob 2 chocolates from their tin. Alice is clearly lying and should not be trusted with the secrets of Quantum Physics. Oh, and not to keep promises, either. Scenario 3 - Alice knows they have (2 + n) chocolates in their chocolate tin, again such that n > 0. Alice promises Bob 2 chocolates from their tin. When Alice and Bob open the tin, the chocolates are all melted. "It's okay," Bob says. "It was only thermodynamics." Nobody knowingly made impossible to keep promises, everybody's happy. feel free to ask any questions or present your viewpoint. i'm happy to discuss my viewpoint on this subject further.
after an year of being into the DSA space, I've now realised that I had not improved my problem solving capabilities by much. I just learnt the concepts that were being taught, and developed pattern matching abilities, NOT PROBLEM SOLVING ONES. Also, Now's the time I realise that the reason I love math is because I could develop the pattern matching skills within a short period of time, thus acing my tests. Thanks for changing the way I thought about math, cs and problem solving in general. This beginner shall now set on the voyage to become a problem solver, a great one, god willing.
The part about time complexity and thinking about the size of call stack in terms of unique states is really great, I've never though of computing the complexity that way before even though it seems intuitive when you actually think about it
Your analogy of treating every function call as a "state" with some fixed value and some state variables really helped clarify dynamic programming for me. I bet there's going to be O(views_on_this_video) increment in dp solves on leetcode now😅
These videos are very thought-provoking. I really like the presentation of this concept, which has traditionally been hard to follow. One request: I have found that the best way to truly integrate a new concept is to have both a good explanation, and also several fully worked examples. This lets me “triangulate” the concept better. Would you consider uploading a third video where you just work two or three full examples using your approach. No need for a lot of explanation, your first two videos cover that, just provide several examples we can use to triangulate the essential characteristics of this tricky concept?
@theprimetime should check this out. This is an excellent breakdown of dynamic programming. Hope you put more videos up, thank you for putting this together.
Very good video. I got a google thing in my gmail and I am not as acquainted with leetcode style problems as I should be. I will do the notetaking methods next time I get the chance to do coding problems. Having all the info right there and breaking it down live seems like a good thing to do. Thank you!
It will be better for us if u solve this problem in first go , does'nt matter how much time u take but that first time thought process of yours give us more value .
Banger out of nowhere. Thanks for the guidance, though in general you're approach comes with deliberate practice. (Easier for some than others off the bat)
Phenomenal video I always thought I was missing something when learning about DP because it never seemed too difficult. I'll blame it on gettig really into Haskell an Type Theory before, that apparently prepared me for it.
You know Haskell actually was what helped me define DP the way I did. Because I knew you could do DP in Haskell, but I was like "wait how do they do that without mutating state" since Haskell is pure. So I looked into it and that's when I realized that, because Haskell is pure, caching functions isn't actually modifying state. All Haskell functions are mathematical definitions, so the same input is the same output. Haskell also does lazy evaluation, so it doesn't execute any calculation unless it's needed. So that's where I got the idea. Recursive terms are values, not tasks. All this time, I've viewed recursion in terms of trees and call stacks, but to Haskell that's just one implementation; it's not the only one.
I'd love it if you could share resources to learn such cool stuff or any materials you've used for this video. This is super helpful and thank you for this !!!
simplify problems with a recurrence relation and recognize that naive recursion is not our only option recursive top down memoization iterative botton up tabulation are the two implementations... nice
I knew how to use dynamic programming before I knew how to write a class. Easiest shit ever. In fact that's what made me get into programming. I started reading a book called "Eloquent Javascript" and all I knew at that point was writing Google Sheets formulas. I took me reading quite a few chapters before I even tried to console.log a "Hello World!" string! And what made me try it was reading about recursion on that (or next) chapter (I don't remember). So at that point I already had an idea how to break down a dynamic problem down to it's units top-to-bottom and then be able to solve the problem from it's simplest form with a bottom-to-top approach. P.S. At this point I had not even written any imperative code (since I assumed that's easy and it's not even what would help me solve any real problems). I wrote my firts for loop statement (in Python) only like a month later in fact I did so trying to come up with my own recursive problems.
This is really clean explanation and thought process for problem solving in general, however I believe this is a greedy backtracking solution and not dynamic programming.
Really great video! I haven't seen an explanation so in depth and clear. One suggestion I have is to keep the energetic inflection in your voice as you're going over the problem. The voice over parts are great, but then it cuts back to the problem breakdown and you have a more monotone voice. It would make it more engaging and consistent if you kept the same enthusiastic inflection throughout the video 🙂
this video is awesome! Liked and subscribed. I already had a look at your leetcode solution headings and the names scare me. Definitely gonna check those out later.
Lmaooo, don't worry about those! They are interesting, but incredibly niche algos that will never really come up until you are deep into competitive programming. Thanks for the support!
20:17 re: Richard Bellman “I spent the Fall quarter (of 1950) at RAND. My first task was to find a name for multistage decision processes. “An interesting question is, ‘Where did the name, dynamic programming, come from?’ The 1950s were not good years for mathematical research. We had a very inter- esting gentleman in Washington named Wilson. He was Secretary of Defense, and he actually had a pathological fear and hatred of the word, research. I’m not using the term lightly; I’m using it precisely. His face would suffuse, he would turn red, and he would get violent if people used the term, research, in his presence. You can imagine how he felt, then, about the term, mathematical. The RAND Cor- poration was employed by the Air Force, and the Air Force had Wilson as its boss, essentially. Hence, I felt I had to do something to shield Wilson and the Air Force from the fact that I was really doing mathematics inside the RAND Cor- poration. What title, what name, could I choose? In the first place I was interested in planning, in decision making, in thinking. But planning, is not a good word for various rea- sons. I decided therefore to use the word, ‘programming.’ I wanted to get across the idea that this was dynamic, this was multistage, this was time-varying-I thought, let’s kill two birds with one stone. Let’s take a word that has an absolutely precise meaning, namely dynamic, in the clas- sical physical sense. It also has a very interesting property as an adjective, and that is it’s impossible to use the word, dynamic, in a pejorative sense. Try thinking of some com- bination that will possibly give it a pejorative meaning. It’s impossible. Thus, I thought dynamic programming was a good name. It was something not even a Congressman could object to. So I used it as an umbrella for my activi- ties” www.researchgate.net/publication/220243993_Richard_Bellman_on_the_Birth_of_Dynamic_Programming
The answer fits into a 32-bit integer
“I don’t care, I’m using Python” 😂
Python so real for that
Faaaacts
Bro is out here teaching us how to think
Give someone a solution, you help them for that problem.
Teach someone problem solving, you empower them for life.
- ChatGPT
@@DecodingIntuitionit's same as give a man a fish he will eat for a day but teach him fishing he will eat for his entire life 😅
@@amvsekaiyeah but this one didn't come out of chatGPT so i'm not gonna believe it
Bro drops a banger and forgot to give us blanket 🥶🥶@@DecodingIntuition
@@DecodingIntuition Goat status
I think I clicked on the wrong type of DP
dr pepper
daft punk?
Deadpool?
Dark Purple
dik pusy? :3
>randomly appears
>makes by far the best video about a programming concept i've seen yet
keep going man
> accepts and elaborates
> leaves
big chad energy
Then you haven’t seen enough
Anyone can teach how to solve a problem but no one actually shows how to break a problem into solvable parts like you.
Keep uploading man.
"big function has been lying to you"
I am now a firm believer in the conspiracy theory that it's all a plot from big function
@@gr.4380 Underrated comment 🤣😂
The worst problem about the Leetcode interview process is that is forcing engineers to memorize instead of thinking. If 20 years ago someone told me that in the future we will be selecting engineers based on a memorization process I would laugh.
In a job market where everbody memorizes patterns an algorithms, these kind of breaking a problem in parts explanation is fresh air
i really hate that too. I am a strong advocate for easier problems with more scrutiny on explanation and correctness.
There's nothing more I want to see gone that questions that have an easy to remember trick solution and poorly trained interviewers just looking to hear THEIR answer.
@@DecodingIntuition indeed. It probably has a higher recruiting cost but I would rather evaluate the thinking process of a candidate instead of the same candidate faking that thinking process because he grinded that Leetcode exercise
It seems the mainstream just has to ruin everything. From tech, to Religion...everything.
Nah the industry aware of this and has actually made interviews 10X harder as a result of it
Cleanest DP intuition video on TH-cam, I have watched countless of them but this step by step like exactly how we think during an actual problem solving process is what connected with me. I really wish you make more videos but from the perspective of how a person who is leaning will think and solve it.
2:27 ”different view of not only DP, but also problem solving - as a hole” - I get it now, DP and holes go toghether, makes sense
I see what you did there ... 🧐
DP is controversial but I think it can be pleasurable for all parties involved
???
@@_JoeVer you sweet little child 😂😂😂
@@_JoeVer google double penetration.
@@_JoeVer search up male dp
This was genuinely mind opening. Thanks for this. It's not often you feel like you a video has made you better off after having watched it. My perspective on problem solving has improved having watched this. Now its all about practice.
DP is hard because the algorithms look like a complete enumeration, especially in optimization problems. Half of the process is to convince yourself that the memorization you've thought of saves enough time in your specific case. This approach with cached complexity simultaneously derives the algorithm (just enumerate every state via recursion) and calculates the complexity for you (the recursive call is O(1)). It is then easier to derive a non-recursive algorithm from the recursive, and the memorization table is a matrix with a dimension for every argument of the recursive call.
Exactly! I'll show in the next video how that conversion to iterative is ridiculously simple.
@@DecodingIntuition Looking forward to that next video!
Primeagen : “CoIn cHaNGe iS hArD”
DecodingIntuition: “…hold my beer…”
To be fair, it is really hard if you don't know that DP is not about drawing arrows on random tables. Once you get comfortable with the idea that you can efficiently use a recurrence relation to simulate all possibilities, coin change really does become as easy as "take the coin or skip the coin" :)
I'd really love for him to see this video and see if it changes his mind about it, because he's a smart guy and I'm sure if he knew what dp actually was he wouldn't have spent over an hour on it trying to pass art class
tbh I found coin change II a lot easier than coin change
This way of thinking actually changed how I view/approach these types of problems. Thank you!
"reject the callstack"
"return to math"
This is going to go viral, the best educational DP video I've seen
Really just getting started into programming and a friend sent this video to me. I think I got quite a bit of it, but this gives me SO much stuff to go and track down and learn. THANK YOU!
Please, I need you to MAKE MORE VIDEOS. I don't care if it's about the most useless data structure or algorithm of mankind, with this video you show that intuition and the process of building a solution is imperative to understand whatever THE solution to the problem means, even if it's a hard problem. I urge you to keep making videos, you help people like me (too much). I REALLY appreciate the time people like you take to explain any concept. Thank you very much.
I'll try :) Thanks for the support!
@@DecodingIntuitionanother person here - I share one for one, exactly what this person has said.
There really is NOT a lot of people on TH-cam that walk through the ENTIRE problem AND process. Please continue making content bro 💪🙏
@@Hellbending That's my goal! I don't just want to tell you why I know a solution works, I want to show how I arrive at it. There's plenty of great content that explains why things work, but I'm here to try to fill the gap for the other :)
Agreed. Also subscribed 🔥
I started Programming two months ago with high intent to go competitive. This is my favorite vids as of now that makes me comeback for another watch every 2-3 days or so. Absolutely beautifully taught
this is a concept i've struggled for so long with THANK YOU
Some of the best vids on youtube are engaging, entertaining, and educational, and you nailed all three. Genuinely great vid
"a name so long you might think it's proprietary" is legitimately the funniest joke I've heard this week.
You got me so hard with that prime hook. Almost closed the tab on instinct, thinking I had made a mistake. Love math, love memes, love this video.
This is the video I needed after suffering with DSA, thank you for breaking technique this down!!
THANK YOU, this video is really opened my mind. I have solved 300 problems on Leetcode, and I can solve most DP problems, but my confidence on DP is little. Your process to observe/break down a problem is phenomenal, and I feel like it just should like this all the time. I will share video to all my friend who can code, and just try to solve the two DP problems that I can't solve.
awesome vid, coin change being the example here is a huge bonus for me because that problem has been fucking with my head for a while even after looking up the solution
This video is so good. Not just for DP, but general problem solving. Also, I really appreciate the notes slides you put in the video, that saves a lot of time and helps me understand the content better. Instant sub.
20:28 This meme highlights the main misconception I have had forever, also loved the department of defense trivia. Holy moly the fact that no one ever mentioned or highlighted that recurrence relation != recurrence execution to me before is such a scam. In fact I was made to think recurrence execution is what happened in the call stack (even though I didn't know how physics allowed it). SOOO GLAD to have cleared it up. Drawing down the entire trace graph of calls always got me stuck and felt unintuitive, since I didn't know how my computer processed it. I also got lost when drawing it down.
"Decisions are Values to compute once and not task to run every time" THIS QUOTE AND VIDEO IS LIFE CHANGING
Its funny I got a non-dev job as a new cs grad, but videos like these are perfect/motivating as I love problem solving and want to keep my skills sharp even if my work right now is in a different field. Since problem solving is a universal skill. Can't wait for the next video since I never truly understood memoization and other space/time optimization that people usually did when solving such DP problems. Or even other LC type problems. I just love that you are focusing on problem solving more than just leetcode, please keep it up!!!! This is a niche (math/cs/leetcode/problem solving) that i always thought lacked good youtube content.
We need more of these breakdowns like this!!
The DP section of this video is good, but the greater value I garnered from this was ACTUALLY applying the breaking-down-the-problem strategies we are taught when approaching leetcode-style problems. These are things I have been told countless times but have struggled to break things down to their core components, but after watching you do it in this video it has really revitalized my confidence. Well earned like and sub, keep up the great work! Would love more videos like this.
Loved the video for so long I have been confused about DP man keep the good work, sending this video to all of my friends right now.
This video is amazing! The confidence you express your ideas with, combined with you immediately backing them up, really helps the ideas settle in my head. I especially liked the example problems at the end, after watching the video I had no trouble at all, which is usually not the case for videos claiming that something is "easy". I didn't even especially struggle with dynamic programming in school, but this definitely helped cement my foundations. Thank you!
Please do make these kind of videos more often, I am a software engineer for over a decade now and I feel to go back to roots again just because of this video :)
You wtf, you actually made it make sense! The missing insight for me was the term and bounds; the way you put it in a table was the missing piece.
You are a goddamn machine. I'm in awe. The way you knew it would pass even before running it? I'm so deeply impressed.
Best leetcode explanation I've ever seen in my life. Please keep making more videos.
Best breakdown I’ve ever seen. Will probably watch a few more times to fully understand. Hoping you’ll upload more Leetcode videos
bro i don't know how to thank you. you changed the entire perspective i held. sorry for following u so late
This was excellent, thank you 👍. Trying to identify a recurrence relation is a very implementable strategy for solving problems
I didn't quite understand the video but base on the comments saying how good this information is, I subbed!
The density of knowledge per meme in this video is A+
I see wisdom and clarity. Thank you.
"If everyone keeps their promise, everyone will end up happy." bro just solved world peace in a programming video
You call making everyone keep their promises a solution? If it's not actionable, how can it be a solution?
@@GRAYgauss it's only "not actionable" if people make promises they cannot keep. it's a simple rule of thumb: if you aren't sure you can keep your promise (to the best of your ability within your control), don't promise. extenuating circumstances such as death and traffic apply.
for our own sanity, we must assume that lexical and logical ambiguities of promise statements have been previously resolved and agreed upon by all involved parties.
for example:
Scenario 1 - Alice knows they have (2 + n) chocolates in their chocolate tin, such that n > 0. Alice promises Bob 2 chocolates from their tin. Alice then gives Bob 2 chocolates from their tin. Nobody knowingly made impossible to keep promises, everybody's happy.
Scenario 2 - Alice knows they have only 1 chocolate in their chocolate tin. Alice promises Bob 2 chocolates from their tin. Alice is clearly lying and should not be trusted with the secrets of Quantum Physics. Oh, and not to keep promises, either.
Scenario 3 - Alice knows they have (2 + n) chocolates in their chocolate tin, again such that n > 0. Alice promises Bob 2 chocolates from their tin. When Alice and Bob open the tin, the chocolates are all melted. "It's okay," Bob says. "It was only thermodynamics." Nobody knowingly made impossible to keep promises, everybody's happy.
feel free to ask any questions or present your viewpoint. i'm happy to discuss my viewpoint on this subject further.
"I promise i wont be happy"
Checkmate
@@jansustar4565 "Checkmate," he says, throwing his own king off the edge of the board.
I will NOT keep my promises because I'm lazy and silly and will eventually end up breaking some of them
always had trouble grasping my head around DP problem but this refresh perspective cleared up so much stuff. thanks for the content!
after an year of being into the DSA space, I've now realised that I had not improved my problem solving capabilities by much. I just learnt the concepts that were being taught, and developed pattern matching abilities, NOT PROBLEM SOLVING ONES.
Also, Now's the time I realise that the reason I love math is because I could develop the pattern matching skills within a short period of time, thus acing my tests.
Thanks for changing the way I thought about math, cs and problem solving in general. This beginner shall now set on the voyage to become a problem solver, a great one, god willing.
I mean, math having formulas and all, is very easy to abuse with the pattern matching llm like approach.
What’s DSA may I ask
The part about time complexity and thinking about the size of call stack in terms of unique states is really great, I've never though of computing the complexity that way before even though it seems intuitive when you actually think about it
Whoa! This was amongst the best videos on DP that I've watched.
Looking forward to more videos. Loved your explanations! Thank you so much!
Omg it's so good to have videos like this. Thanks, man!
Your analogy of treating every function call as a "state" with some fixed value and some state variables really helped clarify dynamic programming for me.
I bet there's going to be O(views_on_this_video) increment in dp solves on leetcode now😅
I am O(so_happy_it_made_sense) for you
These videos are very thought-provoking. I really like the presentation of this concept, which has traditionally been hard to follow. One request: I have found that the best way to truly integrate a new concept is to have both a good explanation, and also several fully worked examples. This lets me “triangulate” the concept better. Would you consider uploading a third video where you just work two or three full examples using your approach. No need for a lot of explanation, your first two videos cover that, just provide several examples we can use to triangulate the essential characteristics of this tricky concept?
Thanks for the suggestion. I probably will at some point.
So well done! One of the best videos on DP
I can’t believe this is your first video! Amazing explanation and entertaining. I would take a course taught by you!
Best explanation on the entire planet, the world needs you, man
This actually helped me 10x my leetcode solving. It was basically me doing the rubber duck technique, but it worked
this is the greatest educational video ive ever seen on this entire platform
Future big tech youtuber right there.
Man, this video was actually so good and well explained you earned a sub keep uploading more about DSA and Competitive Coding
@theprimetime should check this out.
This is an excellent breakdown of dynamic programming. Hope you put more videos up, thank you for putting this together.
Great video! Looking forward for more. Moving away from tables is a really helpful approach
This makes me so happy :)
This is great. Never been this excited for a next upload
Great video, thanks for your time and effort!!! Pure Gold tbh
I know this subject through and through, and still watched it through just cause it’s so damn good
This is the greatest explanation of DP I have ever seen
Very good video.
I got a google thing in my gmail and I am not as acquainted with leetcode style problems as I should be. I will do the notetaking methods next time I get the chance to do coding problems. Having all the info right there and breaking it down live seems like a good thing to do. Thank you!
Exceptional video, this makes code problem look fun for me
this is seriously awesome, keep up good work, you're gonna go big on youtube if you keep this up, thank you so much
Dude, that was some quality content.
definitely want more of this. thank you
Funny as fuck. Insightful as hell. If my maths teacher was as enthusiastic as you I'd likely have learned what inductive thinking actually was.
It will be better for us if u solve this problem in first go , does'nt matter how much time u take but that first time thought process of yours give us more value .
This has to be the best video on DP. Hope you make more videos on other topics.
Holy what a great video, instantly subbed
Bro just randomly appeared uploaded the best DP explanation video ever.
I seriously look at coding problems differently now
Same
Banger out of nowhere. Thanks for the guidance, though in general you're approach comes with deliberate practice. (Easier for some than others off the bat)
Phenomenal video
I always thought I was missing something when learning about DP because it never seemed too difficult. I'll blame it on gettig really into Haskell an Type Theory before, that apparently prepared me for it.
You know Haskell actually was what helped me define DP the way I did. Because I knew you could do DP in Haskell, but I was like "wait how do they do that without mutating state" since Haskell is pure.
So I looked into it and that's when I realized that, because Haskell is pure, caching functions isn't actually modifying state. All Haskell functions are mathematical definitions, so the same input is the same output. Haskell also does lazy evaluation, so it doesn't execute any calculation unless it's needed.
So that's where I got the idea. Recursive terms are values, not tasks. All this time, I've viewed recursion in terms of trees and call stacks, but to Haskell that's just one implementation; it's not the only one.
@@DecodingIntuition it's such a funky language. I love that the perspective shift it requires has this broader utility
This is how I coded Fibonacci in 10th grade. Nobody believed me at first when I said I implemented it recursively in O(n).
It's your first video? Man, it's awesome. I already subscribed midway the video. Gimme some MOAR!!
I'd love it if you could share resources to learn such cool stuff or any materials you've used for this video. This is super helpful and thank you for this !!!
Cracked video. I expect this one to make the rounds on X in about a week or two, good luck
Great video, this is the youtube recommendations I want to get!!!
Nice video. Can feel you having fun and I had fun watching too haha
simplify problems with a recurrence relation
and recognize that naive recursion
is not our only option
recursive top down memoization
iterative botton up tabulation
are the two implementations...
nice
We'd worship you , if you keep uploading man
man please make more leetcode solution videos or stream you explain very well
Very helpful perspective, waiting for the Advent of code to try it😊
Nah bro is actually goated 😭
This was excellent, great job!
Noo, I wanted to check out more videos from you but this is the only one.
Thanks so much for this. This was really fun to watch.
I knew how to use dynamic programming before I knew how to write a class. Easiest shit ever. In fact that's what made me get into programming.
I started reading a book called "Eloquent Javascript" and all I knew at that point was writing Google Sheets formulas.
I took me reading quite a few chapters before I even tried to console.log a "Hello World!" string!
And what made me try it was reading about recursion on that (or next) chapter (I don't remember).
So at that point I already had an idea how to break down a dynamic problem down to it's units top-to-bottom and then be able to solve the problem from it's simplest form with a bottom-to-top approach.
P.S.
At this point I had not even written any imperative code (since I assumed that's easy and it's not even what would help me solve any real problems).
I wrote my firts for loop statement (in Python) only like a month later in fact I did so trying to come up with my own recursive problems.
I love this video in more ways than you can count
Maybe I can use dynamic programming to figure it out, but I'll skip thinking about that and just take the compliment :) Glad you enjoyed it!
This is really clean explanation and thought process for problem solving in general, however I believe this is a greedy backtracking solution and not dynamic programming.
Damn, that is beautiful reasoning right there!
Really great video! I haven't seen an explanation so in depth and clear.
One suggestion I have is to keep the energetic inflection in your voice as you're going over the problem. The voice over parts are great, but then it cuts back to the problem breakdown and you have a more monotone voice. It would make it more engaging and consistent if you kept the same enthusiastic inflection throughout the video 🙂
I love how the energy changes from when he's problem solving and doing the voice over.
this video is awesome! Liked and subscribed. I already had a look at your leetcode solution headings and the names scare me. Definitely gonna check those out later.
Lmaooo, don't worry about those! They are interesting, but incredibly niche algos that will never really come up until you are deep into competitive programming. Thanks for the support!
FIRE!!!!!!
THIS IS WHAT REAL PROGRAMMING IS¡
20:17
re: Richard Bellman
“I spent the Fall quarter (of 1950) at RAND. My first task
was to find a name for multistage decision processes.
“An interesting question is, ‘Where did the name,
dynamic programming, come from?’ The 1950s were not
good years for mathematical research. We had a very inter-
esting gentleman in Washington named Wilson. He was
Secretary of Defense, and he actually had a pathological
fear and hatred of the word, research. I’m not using the
term lightly; I’m using it precisely. His face would suffuse,
he would turn red, and he would get violent if people used
the term, research, in his presence. You can imagine how he
felt, then, about the term, mathematical. The RAND Cor-
poration was employed by the Air Force, and the Air Force
had Wilson as its boss, essentially. Hence, I felt I had to do
something to shield Wilson and the Air Force from the fact
that I was really doing mathematics inside the RAND Cor-
poration. What title, what name, could I choose? In the first
place I was interested in planning, in decision making, in
thinking. But planning, is not a good word for various rea-
sons. I decided therefore to use the word, ‘programming.’
I wanted to get across the idea that this was dynamic, this
was multistage, this was time-varying-I thought, let’s kill
two birds with one stone. Let’s take a word that has an
absolutely precise meaning, namely dynamic, in the clas-
sical physical sense. It also has a very interesting property
as an adjective, and that is it’s impossible to use the word,
dynamic, in a pejorative sense. Try thinking of some com-
bination that will possibly give it a pejorative meaning.
It’s impossible. Thus, I thought dynamic programming was
a good name. It was something not even a Congressman
could object to. So I used it as an umbrella for my activi-
ties”
www.researchgate.net/publication/220243993_Richard_Bellman_on_the_Birth_of_Dynamic_Programming
Great vid thanks! Kinda funny that something triggered you enough to make this amazing content, I hope more things trigger you in the future :)
dw I have really thin skin and get triggered easily, so more to come :)