Top 5 Dynamic Programming Patterns for Coding Interviews - For Beginners

Sdílet
Vložit
  • čas přidán 3. 06. 2024
  • 🚀 neetcode.io/ - A better way to prepare for Coding Interviews
    🐦 Twitter: / neetcode1
    🥷 Discord: / discord
    🐮 Support the channel: / neetcode
    Top 5 DP Patterns Spreadsheet - docs.google.com/spreadsheets/...
    Twitter: / neetcode1
    Discord: / discord
    ⭐ BLIND-75 PLAYLIST: • Two Sum - Leetcode 1 -...
    💡 CODING SOLUTIONS: • Coding Interview Solut...
    💡 DYNAMIC PROGRAMMING PLAYLIST: • House Robber - Leetco...
    🌲 TREE PLAYLIST: • Invert Binary Tree - D...
    💡 GRAPH PLAYLIST: • Course Schedule - Grap...
    💡 BACKTRACKING PLAYLIST: • Word Search - Backtrac...
    💡 LINKED LIST PLAYLIST: • Reverse Linked List - ...
    💡 BINARY SEARCH PLAYLIST: • Binary Search
    0:00 - Intro
    1:11 - 1. Fibonacci Numbers
    6:45 - 2. Zero One Knapsack
    13:07 - 3. Unbounded Knapsack
    16:51 - 4. Longest Common Subsequence
    23:30 - 5. Palindromes
    #dynamic #programming #python
    Disclosure: Some of the links above may be affiliate links, from which I may earn a small commission.
  • Věda a technologie

Komentáře • 120

  • @NeetCode
    @NeetCode  Před 2 lety +27

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

  • @tabeebyeamin9986
    @tabeebyeamin9986 Před 2 lety +91

    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 Před 10 měsíci

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

    • @alexruan5639
      @alexruan5639 Před 7 měsíci +1

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

  • @fightmeonclubpenguin7748
    @fightmeonclubpenguin7748 Před 2 lety +57

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

  • @davidespinosa1910
    @davidespinosa1910 Před 2 lety +26

    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.

  • @ranitchatterjee5552
    @ranitchatterjee5552 Před 2 lety +4

    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. ❤️

  • @susmi51910
    @susmi51910 Před 2 lety +3

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

  • @alexeysubbota
    @alexeysubbota Před rokem

    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!

  • @imj3nny
    @imj3nny Před 2 lety +3

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

  • @varunrajput8083
    @varunrajput8083 Před 2 lety +8

    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..

  • @homi.mp3
    @homi.mp3 Před 2 lety +3

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

  • @miettoisdev
    @miettoisdev Před rokem +1

    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 🤜🤛

  • @kirillzlobin7135
    @kirillzlobin7135 Před 4 měsíci

    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.

  • @janailtongoncalvesdesouza4160

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

  • @whileminseok5110
    @whileminseok5110 Před 2 lety +1

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

  • @dinhnhobao
    @dinhnhobao Před 2 lety +1

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

  • @panggrayta
    @panggrayta Před 2 lety

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

  • @max3446
    @max3446 Před 2 lety +2

    Easily the best LC channel, thank you :)

  • @venkatasriharsha4227
    @venkatasriharsha4227 Před 2 lety +6

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

  • @karthik829
    @karthik829 Před 2 lety +88

    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 Před rokem +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 Před rokem +1

      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)

  • @jinny5025
    @jinny5025 Před 2 lety +49

    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.

  • @kartikhakim4674
    @kartikhakim4674 Před 2 lety +1

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

  • @benjaminkeene5444
    @benjaminkeene5444 Před rokem +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 Před 9 měsíci

      The feeling that the athor somehow bullshittin us huh ? 😀

  • @arnabganguly4962
    @arnabganguly4962 Před 2 lety

    Thanks for sharing this approach.

  • @YasirYSR
    @YasirYSR Před 2 lety

    amazing, please keep doing this wonderful work.

  • @shresthgupta6875
    @shresthgupta6875 Před 2 lety +1

    Thanks for this spreadsheet.

  • @AnkitYadav-tf1ww
    @AnkitYadav-tf1ww Před rokem

    Very Important for understanding core concepts of dynamic programming.

  • @marioa.castresana6946
    @marioa.castresana6946 Před 2 lety

    Awesome video! thank you so much

  • @anishdeshmukh4690
    @anishdeshmukh4690 Před 2 lety +1

    Thanks a lot! You're the best

  • @victormacgrath
    @victormacgrath Před rokem

    Really helpful, thank you very much

  • @another14edits74
    @another14edits74 Před 2 lety +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.

  • @deathbombs
    @deathbombs Před rokem

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

  • @dongni1106
    @dongni1106 Před rokem

    very good video! thanks so much.

  • @algorithmo134
    @algorithmo134 Před 2 lety +1

    Looking forward for this

  • @mahmudurrahman1170
    @mahmudurrahman1170 Před 2 lety +1

    U are just awesome. thanks a lot

  • @subhendurana6457
    @subhendurana6457 Před rokem

    You are just saviour in my battle-hour!

  • @eddiej204
    @eddiej204 Před 2 lety +1

    The best Leetcode channel ever

  • @d4c98
    @d4c98 Před 2 lety

    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.

  • @DaniyaalKhan2000
    @DaniyaalKhan2000 Před 2 lety +19

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

  • @hoyinli7462
    @hoyinli7462 Před 2 lety

    thx for your work!

  • @elleech6885
    @elleech6885 Před 2 lety

    man i just so love you!!

  • @piyushaggarwal5984
    @piyushaggarwal5984 Před 2 lety +7

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

  • @director8656
    @director8656 Před 2 lety +1

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

  • @RandomShowerThoughts
    @RandomShowerThoughts Před měsícem

    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

  • @netraamrale3850
    @netraamrale3850 Před 2 lety

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

  • @tawakulislamia9637
    @tawakulislamia9637 Před 2 lety

    You got the subscriber💕💕

  • @Lamya1111
    @Lamya1111 Před 2 lety

    Ace video, mate.

  • @rajeev_nair
    @rajeev_nair Před 2 lety +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 Před 2 měsíci

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

  • @river.
    @river. Před 10 měsíci

    you are the best teacher

  • @annabellesun4719
    @annabellesun4719 Před 2 lety

    you are the god !! thank you

  • @ChocolateMilkCultLeader

    Fantastic video

  • @JTNewby
    @JTNewby Před rokem

    You're my hero.

  • @mithun532
    @mithun532 Před 2 lety

    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 ?

  • @VivekMishrathetraveller
    @VivekMishrathetraveller Před 2 lety +1

    Can you make a video on Critical connections?

  • @dhruvsakariya3129
    @dhruvsakariya3129 Před 11 měsíci

    Thank you neetcode

  • @linhdinh136
    @linhdinh136 Před 2 lety

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

  • @kamauwaweru4991
    @kamauwaweru4991 Před 4 měsíci

    very clear

  • @yoyo8293
    @yoyo8293 Před 2 lety +2

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

    • @tabeebyeamin9986
      @tabeebyeamin9986 Před 2 lety +1

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

  • @anujonthemove
    @anujonthemove Před rokem +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?

  • @AK09037
    @AK09037 Před 2 lety

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

  • @camiiii272
    @camiiii272 Před 2 lety +8

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

    • @NeetCode
      @NeetCode  Před 2 lety +2

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

  • @Pogibakayo
    @Pogibakayo Před 2 lety +2

    Thanks!

    • @NeetCode
      @NeetCode  Před 2 lety

      Thank you so much Alex!!!

  • @dandyyu0220
    @dandyyu0220 Před rokem

    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!

  • @huangshufen2211
    @huangshufen2211 Před rokem

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

  • @whonayem01
    @whonayem01 Před 2 lety

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

  • @ChiaDai
    @ChiaDai Před 2 lety

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

  • @Grimreap191
    @Grimreap191 Před 2 lety

    KING

  • @MotoDumpling
    @MotoDumpling Před rokem

    Love it~

  • @angelosguan6782
    @angelosguan6782 Před rokem

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

  • @chiraagpala3243
    @chiraagpala3243 Před 2 lety +1

    What does for beginners mean? Are there more patterns?

  • @billyfung
    @billyfung Před rokem

    Amazing

  • @akhilbaktha5609
    @akhilbaktha5609 Před 2 lety +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 🔥

  • @JulianBoilen
    @JulianBoilen Před 2 lety +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.

  • @brycechung4460
    @brycechung4460 Před měsícem

    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.

  • @aniruddhahehim3616
    @aniruddhahehim3616 Před 2 lety +1

    Low-key thanks.

  • @avetiqasatryan1540
    @avetiqasatryan1540 Před rokem

    why you don't use Binet equation for fibonacci ?

  • @yilmazbingol4838
    @yilmazbingol4838 Před 2 lety +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.

  • @ericc8097
    @ericc8097 Před rokem

    right

  • @subha1818
    @subha1818 Před 2 lety

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

  • @hannahruan2764
    @hannahruan2764 Před 2 lety

    how to get the spreedsheet

  • @sidhartheleswarapu
    @sidhartheleswarapu Před 2 měsíci

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

  • @shivambaghel9668
    @shivambaghel9668 Před 2 lety

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

  • @adesuryaramadhan7565
    @adesuryaramadhan7565 Před 2 lety

    can i get the spreedsheet?

    • @NeetCode
      @NeetCode  Před 2 lety

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

  • @Su_Has
    @Su_Has Před rokem

    Where is the speadsheet?

    • @NeetCode
      @NeetCode  Před rokem

      Did you check the description?

    • @Su_Has
      @Su_Has Před rokem

      @@NeetCode oops thanks

  • @luxurylifestyle3804
    @luxurylifestyle3804 Před 2 lety

    Binary tree cameras leetcode

  • @ayush7518
    @ayush7518 Před 2 lety

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

  • @20x20
    @20x20 Před rokem

    the "right?" is pretty distracting

  • @Bromon655
    @Bromon655 Před 11 měsíci +1

    I feel so stupid watching these videos.

  • @chilly2171
    @chilly2171 Před 2 lety +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.

  • @EranM
    @EranM Před měsícem

    n33tc0de, I love u bruh

  • @HusainDalal
    @HusainDalal Před rokem

    Thanks!

  • @angrychick7543
    @angrychick7543 Před rokem

    Thanks!

  • @xyz-abc-free
    @xyz-abc-free Před rokem

    Thanks!

  • @bifidoc
    @bifidoc Před rokem

    Thanks!

  • @TerryFrenchy
    @TerryFrenchy Před 2 lety

    Thanks!

    • @NeetCode
      @NeetCode  Před 2 lety +1

      Thank you so much, I really appreciate it! 😊