Top 5 Dynamic Programming Patterns for Coding Interviews - For Beginners

Поделиться
HTML-код
  • Опубликовано: 8 янв 2025

Комментарии • 131

  • @NeetCode
    @NeetCode  2 года назад +29

    🚀 neetcode.io/ - A better way to prepare for Coding Interviews

  • @tabeebyeamin9986
    @tabeebyeamin9986 3 года назад +122

    These are good and makes me realize what a great CS curriculum I had that covered all 5 of these lol. I would also study
    6. DFS + memoization (Longest Increasing Path in a Matrix, Path Sum III)
    7. Backtracking + memoization (Regex/Wildcard, Partition to K Equal Sum Subsets)
    8. State Machine (Best Time to Buy & Sell Stock variations)

    • @dj1984x
      @dj1984x Год назад

      are dfs + memoization & backtracking + memoization the same? at least in neetcode's videos, he uses dfs algo for any backtracking problem

    • @alexruan5639
      @alexruan5639 Год назад +4

      ​@@dj1984x DFS is not just backtracking, but backtracking is always DFS.

    • @vatsal6754
      @vatsal6754 5 месяцев назад

      what are state machine problems and how are they different from any other dp problem can you explain the fundamentals briefly

  • @davidespinosa1910
    @davidespinosa1910 2 года назад +42

    DP = recursion + memoization. Then, if you want to memoize using an array instead of a hash map, you can optimize that after. So it's no harder than recursion. But DP often uses a variable number of subproblems, while more straightforward recursions use only one or two subproblems.

    • @_PranavDesai
      @_PranavDesai 4 месяца назад

      The issue is that recursion usually results in exceeding time limit or memory complexity. It's almost as if leetcode expects a bottom up solution. Recursion+memoization works for the simpler problems, but definitely not for problem like 0/1 knapsack

    • @davidespinosa1910
      @davidespinosa1910 4 месяца назад

      @@_PranavDesai Recursion + memoization works for *all* dynamic programming problems. Look for a leetcode post by chrisTris on 0/1 knapsack and dynamic programming.

    • @wojak6793
      @wojak6793 4 месяца назад +1

      Tabulation is also DP and it is not recursive at all

    • @davidespinosa1910
      @davidespinosa1910 4 месяца назад

      @@wojak6793 Please re-read my comment, thanks.

  • @fightmeonclubpenguin7748
    @fightmeonclubpenguin7748 3 года назад +62

    This channel is such a great find. I just wish there were more videos haha

  • @miettoisdev
    @miettoisdev 2 года назад +4

    some real quality content here.
    interview material is usually bloated with edgy-cleverish stuff, not structured according to problem's domain of knowledge and not prioritized correctly.
    you, sir, have managed to sort all that out.
    thank 🤜🤛

  • @jinny5025
    @jinny5025 3 года назад +52

    I'm not confident with dp problems. But this spreadsheet is awesome!! Thank you as always. And congrats you've gained 10k subscribers so far :) You deserve more.

  • @karthik829
    @karthik829 3 года назад +93

    Your videos are really helpful. Just a suggestion, it would be really nice if you could create a video on when we should do backtracking vs dynamic programming. As some seems to fall on both with different runtime and people use different solutions

    • @wongwong7479
      @wongwong7479 2 года назад +2

      actually, i think both backtracking and dp is bruteforce which try all combination, but if one can build an optimal structure and a DAG , then definitely we should use dp to reduce from exponential time (backtracking/dfs)

    • @AdilProgramming
      @AdilProgramming 2 года назад +2

      We use dp when their are overlapping sub-problems, here in this problem their is not any sub-problem(part of problem we have already solved)

  • @ranitchatterjee5552
    @ranitchatterjee5552 2 года назад +5

    I want to thank Neetcode. The videos were great resource to learn coding and crack tech interviews. I'm very thankful to this channel. Hope your channel grows more and more. ❤️

  • @benjaminkeene5444
    @benjaminkeene5444 2 года назад +3

    Love the videos. SMALL EDIT: For the “Unbounded Knapsack”, we do not need 2D array. We only need to know MIN(coinsUsed) at each position. Since we can use any coin at each position, we do not need to track type of coins used.

    • @buddyreg234
      @buddyreg234 Год назад

      The feeling that the athor somehow bullshittin us huh ? 😀

  • @venkatasriharsha4227
    @venkatasriharsha4227 3 года назад +6

    The best Python Leetcode problem solver. Love u brother ❤️

  • @alexeysubbota
    @alexeysubbota 2 года назад

    Guy, you really helped me a lot! After watching Climbing Stairs video I did solve Maximum Alternating Subsequence Sum problem not only using DP but using bottom up approach!

  • @susmi51910
    @susmi51910 3 года назад +4

    This is truly life saving! Please make more of this type of videos for other topics.

  • @varunrajput8083
    @varunrajput8083 3 года назад +9

    This is perfect. Thank you.
    Can you please make similar lists for other topics as well? That will be extremely helpful because while solving the problem it's good to have an idea about general approach you'll be following..

  • @kirillzlobin7135
    @kirillzlobin7135 11 месяцев назад

    This style of videos is very informative. It helps to structure and categorize the information related to DP problems and allows to come to the solution faster.

  • @cali_capri
    @cali_capri 3 года назад +5

    Thank you! This is so helpful! I look forward to more of this type pf high level overview :)

  • @max3446
    @max3446 3 года назад +2

    Easily the best LC channel, thank you :)

  • @janailtongoncalvesdesouza4160
    @janailtongoncalvesdesouza4160 Год назад

    The way you explain CS is awesome, bro! Keep doing the good job!

  • @butoyighyslain171
    @butoyighyslain171 2 месяца назад

    Thank you @Neetcode, you are changing people's lives

  • @calvin_713
    @calvin_713 3 месяца назад +1

    The palindrome checking method so helpful!

  • @eddiej204
    @eddiej204 2 года назад +1

    The best Leetcode channel ever

  • @DaniyaalKhan2000
    @DaniyaalKhan2000 3 года назад +30

    Are you spying on me? This is literally what I was searching for! xD

  • @homi.mp3
    @homi.mp3 3 года назад +3

    Brilliant explanation, your videos are extremely helpful, thank you for doing all the good work :)

  • @dinhnhobao
    @dinhnhobao 3 года назад +1

    Great stuff! I have learned a lot from your videos. Please do more of these!

  • @piyushaggarwal5984
    @piyushaggarwal5984 3 года назад +7

    Could you please add the 'Matrix Chain Multiplication' category to this sheet?

  • @deathbombs
    @deathbombs 2 года назад

    I've been doing DP for a while so not exactly a beginner, but this is still helpful way to see things

  • @AnkitYadav-tf1ww
    @AnkitYadav-tf1ww 2 года назад

    Very Important for understanding core concepts of dynamic programming.

  • @panggrayta
    @panggrayta 2 года назад

    very clear explanation. good job NeetCode. keep up to date your videos . thanks

  • @whileminseok5110
    @whileminseok5110 3 года назад +1

    this is so AWESOME!!! thanks for sharing your knowledge :)

  • @shresthgupta6875
    @shresthgupta6875 3 года назад +1

    Thanks for this spreadsheet.

  • @rajeev_nair
    @rajeev_nair 2 года назад +4

    I don't think 0/1 in 0/1 Knapsack refer to finite/infinite number of the item - its more about if the item put in the knapsack can be fractional or not. 0/1 means either it exists in the knapsack or it does not - in fractional knapsack, you can pick fraction of some item as well -- which would be represented as .someDecimalValue, not 0/1.

    • @ashishkulkarni2350
      @ashishkulkarni2350 10 месяцев назад

      Yes correct, this falls in the category of unbounded knapsack where you are not confined to use the element only once.

  • @subhendurana6457
    @subhendurana6457 2 года назад

    You are just saviour in my battle-hour!

  • @kartikhakim4674
    @kartikhakim4674 3 года назад +1

    Please make and share more videos / spreadsheets like this
    They are really helpful for practice 🙏

  • @another14edits74
    @another14edits74 2 года назад +1

    Can you please make videos on fundamental DP questions (such as the ones you listed in this video) and solve them with multiple solutions describing how you build intuition to build the Brute Force way and optimized it in Top-Bottom/Bottom-Up fashion and finally optimized it with constant space.
    I understand you have explained the approaches in a your videos but can you go in a bit more depth as to how you came up with the Brute Force approach and how you thought that I can optimize it in this way.
    Your videos have been of great help, Thank you.

  • @akhilbaktha5609
    @akhilbaktha5609 3 года назад +5

    After i suggested neetcode to my friend’s
    My friends: should we bow ?
    Me: Yeah, he’s a king.
    Really love the content, keep going 🔥

  • @d4c98
    @d4c98 2 года назад

    Finally I finish all the exercises listed in the dp spreadsheet. It has been a lot of help, thank u. wish there are more summary videos like this.

  • @yoyo8293
    @yoyo8293 3 года назад +2

    I think Longest Increasing Subsequences (LIS) type problems deserve its own category ... Also Maximum Sum Subarray (Kadanes Algo)

    • @tabeebyeamin9986
      @tabeebyeamin9986 3 года назад +1

      Yeah LIS is pretty big, you have problems like Russian Doll Envelopes & Box Stacking.

  • @anujonthemove
    @anujonthemove 2 года назад +1

    From your Dynamic Programming Patterns sheet, I think Fibonacci Number is kind of Linear DP problem whereas House Robber is more of a Decision Making kind of problem so they should not be falling in the same bucket in case you are categorizing them. Any thoughts?

  • @arnabganguly4962
    @arnabganguly4962 2 года назад

    Thanks for sharing this approach.

  • @camiiii272
    @camiiii272 3 года назад +8

    Just what I was looking for, ty! Just a thought maybe you could extend this to other types of leetcode problems?

    • @NeetCode
      @NeetCode  3 года назад +3

      Good idea, I definitely will try to work on that!

  • @TerryFrenchy
    @TerryFrenchy 3 года назад

    Thanks!

    • @NeetCode
      @NeetCode  3 года назад +1

      Thank you so much, I really appreciate it! 😊

  • @RandomShowerThoughts
    @RandomShowerThoughts 8 месяцев назад

    I think this is really good, though I think we should motivate recursion way more. The grid is fine, but it makes more sense doing that

  • @YasirYSR
    @YasirYSR 3 года назад

    amazing, please keep doing this wonderful work.

  • @marioa.castresana6946
    @marioa.castresana6946 2 года назад

    Awesome video! thank you so much

  • @anishdeshmukh4690
    @anishdeshmukh4690 3 года назад +1

    Thanks a lot! You're the best

  • @victormacgrath
    @victormacgrath 2 года назад

    Really helpful, thank you very much

  • @dongni1106
    @dongni1106 2 года назад

    very good video! thanks so much.

  • @chiraagpala3243
    @chiraagpala3243 3 года назад +1

    What does for beginners mean? Are there more patterns?

  • @dandyyu0220
    @dandyyu0220 2 года назад

    I'm just wondering what your adivce would be on how much and what algorithms in terms of coding I should know if I wanna apply for Amazon data scientist role? Thank you!

  • @brycechung4460
    @brycechung4460 8 месяцев назад

    This is probably a long shot but can someone explain how the palindrome solutions are DP? Ive seen the individual problem solutions and they all use the expand from center trick which isn't really memoization thus not really DP(at least how I understand it). On LC, I see solutions of more standard DP approaches that use a 2d array to memoize a string from any 2 start&end points.

  • @huangshufen2211
    @huangshufen2211 2 года назад

    what is the device / software thatdraws on the screen? very interesting

  • @algorithmo134
    @algorithmo134 3 года назад +1

    Looking forward for this

  • @river.
    @river. Год назад

    you are the best teacher

  • @pemcodegame4918
    @pemcodegame4918 7 месяцев назад

    What's the whiteboarding software? Do you just use a mouse or some sort of pen tablet?

  • @mahmudurrahman1170
    @mahmudurrahman1170 3 года назад +1

    U are just awesome. thanks a lot

  • @VivekMishrathetraveller
    @VivekMishrathetraveller 3 года назад +1

    Can you make a video on Critical connections?

  • @director8656
    @director8656 3 года назад +1

    Great Video!!!!, are you a faang employee??

  • @elleech6885
    @elleech6885 3 года назад

    man i just so love you!!

  • @tawakulislamia9637
    @tawakulislamia9637 3 года назад

    You got the subscriber💕💕

  • @mithun532
    @mithun532 3 года назад

    Thanks a lot ! But after seeing this video i was trying to solve the 1/0 knapsack problem type - equal partition based on tabular method rather than your solution video of the same. Unfortunately I am not able to solve the same can you please create video how tabular method works for the same question ?

  • @ChiaDai
    @ChiaDai 2 года назад

    Curious what device and software you use to present like this.

  • @JTNewby
    @JTNewby 2 года назад

    You're my hero.

  • @JulianBoilen
    @JulianBoilen 2 года назад +3

    Do you think it okay to solve DP problems with recursion with memoization? It's often much easier for me to conceptualize the recursive implementation than the iterative one.
    Theoretically it should be the same, but with the use of the call stack.

  • @AK09037
    @AK09037 3 года назад

    Omg ily so much. I think you are missing Matrix Chain Multiplication pattern and DP on trees. But still ILY!!

  • @Lamya1111
    @Lamya1111 2 года назад

    Ace video, mate.

  • @angelosguan6782
    @angelosguan6782 Год назад

    Another category that might be helpful here is probably matrix/maze problems

  • @Cld136
    @Cld136 3 года назад

    Could you please do a video on "Longest Palindromic Subsequence"?

  • @annabellesun4719
    @annabellesun4719 2 года назад

    you are the god !! thank you

  • @yilmazbingol4838
    @yilmazbingol4838 3 года назад +1

    Mr. Neet Code. I wanna make a request for 935. Knight Dialer if you struggle to choose a question. it is asked by Facebook and there is no explanation on youtube.

  • @dhruvsakariya3129
    @dhruvsakariya3129 Год назад

    Thank you neetcode

  • @hoyinli7462
    @hoyinli7462 3 года назад

    thx for your work!

  • @avetiqasatryan1540
    @avetiqasatryan1540 2 года назад

    why you don't use Binet equation for fibonacci ?

  • @ChocolateMilkCultLeader
    @ChocolateMilkCultLeader 3 года назад

    Fantastic video

  • @OrphanedZombie
    @OrphanedZombie 10 месяцев назад

    You're one the rare examples of someone with an American accent who pronounces "new" like "nyoo" instead of "noo"

  • @deepaksh2633
    @deepaksh2633 6 месяцев назад

    I am not unable to convert memoisation to dp how to do it ?

  • @netraamrale3850
    @netraamrale3850 3 года назад

    Thanks alot . Too good....!!!

  • @subha1818
    @subha1818 3 года назад

    Is this the same guy who posts daily dose of internet?

  • @whonayem01
    @whonayem01 2 года назад

    Thanks. You just made it clear. fear---;

  • @hannahruan2764
    @hannahruan2764 3 года назад

    how to get the spreedsheet

  • @shivambaghel9668
    @shivambaghel9668 2 года назад

    why you don't put this video a the first place in this dp series

  • @kamauwaweru4991
    @kamauwaweru4991 Год назад

    very clear

  • @adesuryaramadhan7565
    @adesuryaramadhan7565 3 года назад

    can i get the spreedsheet?

    • @NeetCode
      @NeetCode  3 года назад

      Link should be in the description (let me know if its not working)

  • @Grimreap191
    @Grimreap191 3 года назад

    KING

  • @Su_Has
    @Su_Has 2 года назад

    Where is the speadsheet?

    • @NeetCode
      @NeetCode  2 года назад

      Did you check the description?

    • @Su_Has
      @Su_Has 2 года назад

      @@NeetCode oops thanks

  • @aniruddhac99
    @aniruddhac99 3 года назад +1

    Low-key thanks.

  • @MotoDumpling
    @MotoDumpling Год назад

    Love it~

  • @billyfung
    @billyfung 2 года назад

    Amazing

  • @ayush7518
    @ayush7518 2 года назад

    Can u please reduce the number of adds it's too much irritating

  • @ajaysenger2
    @ajaysenger2 5 месяцев назад

    I would definitely become a patron but currently I am struggling financially. If I get a job this year would make a generous donation.

  • @luxurylifestyle3804
    @luxurylifestyle3804 3 года назад

    Binary tree cameras leetcode

  • @ericc8097
    @ericc8097 2 года назад

    right

  • @Bromon655
    @Bromon655 Год назад +1

    I feel so stupid watching these videos.

  • @exploringnaturalbeauty2102
    @exploringnaturalbeauty2102 3 года назад

    5:25

  • @chilly2171
    @chilly2171 3 года назад +1

    You seem to make things harder with explanation and graphs. You should explain with a datastructure, like in an array or hashmap, etc or say a for-loop etc for context to make it easier to understand.

  • @20x20
    @20x20 2 года назад

    the "right?" is pretty distracting

  • @EranM
    @EranM 9 месяцев назад

    n33tc0de, I love u bruh

  • @Pogibakayo
    @Pogibakayo 3 года назад +2

    Thanks!

    • @NeetCode
      @NeetCode  3 года назад

      Thank you so much Alex!!!

  • @HusainDalal
    @HusainDalal 2 года назад

    Thanks!

  • @bifidoc
    @bifidoc 2 года назад

    Thanks!

  • @angrychick7543
    @angrychick7543 2 года назад

    Thanks!

  • @Sword-32-21
    @Sword-32-21 2 года назад

    Thanks!