Number of Music Playlists - Leetcode 920 - Python

Sdílet
Vložit
  • čas přidán 25. 07. 2024
  • Solving Leetcode 920 - Number of Music Playlists, today's daily leetcode on August 5.
    🚀 neetcode.io/ - A better way to prepare for Coding Interviews
    🥷 Discord: / discord
    🐦 Twitter: / neetcode1
    🐮 Support the channel: / neetcode
    ⭐ BLIND-75 PLAYLIST: • Two Sum - Leetcode 1 -...
    💡 DYNAMIC PROGRAMMING PLAYLIST: • House Robber - Leetco...
    Problem Link: leetcode.com/problems/number-...
    0:00 - Read the problem
    1:30 - Drawing Explanation
    13:30 - Coding Explanation
    leetcode 920
    #neetcode #leetcode #python

Komentáře • 55

  • @YeetusOfHouseFetus
    @YeetusOfHouseFetus Před 11 měsíci +17

    Return of the king 🙇‍♂️

  • @Cheng-K
    @Cheng-K Před 11 měsíci +14

    Happy to see that you are back at leetcoding 💪

    • @sprajosh
      @sprajosh Před 6 měsíci

      -leetcoding- neetcoding 😆

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

    Missed your daily videos so much. Glad you're back 🥳

  • @peakpotential9
    @peakpotential9 Před 11 měsíci +15

    Unique makes more sense than old_songs

    • @NeetCodeIO
      @NeetCodeIO  Před 11 měsíci +6

      Yeah that's fair. Old makes more sense to me since the two decisions we're making are old vs new songs, but its a little confusing either way.
      Better than i, j tho like most solutions on lc

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

      ​@@NeetCodeIOthat's kind of clean code!

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

    dontr stop uploading videos, you are the best

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

    You're back!!

  • @uptwist2260
    @uptwist2260 Před 11 měsíci +2

    Thanks for the daily

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

    Thank you. It helped a lot

  • @user-jk4gi3gi8k
    @user-jk4gi3gi8k Před 11 měsíci

    Thanks for this better explanation ❤

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

    Thanks for the providing the answer for daily

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

    At 13:16 when you said I didn't explain "entirely". I'm like, bruh... you explain everything.

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

    I am thinking why did you stopped making videos in Neetcode ............ Now I got . Just now solving that problem and searched for the solution , then i have seen your new channel

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

    Impressive work :)

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

    welcome back

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

    great video thanks

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

    Studying computer science would be much more difficult without you

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

    great explanation

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

    i am still somewhat confused. is there a easier version of similar problem? also can anyone explain this line.
    res += (used_songs - k) * count(target - 1, used_songs)
    will this properly calculate combinations when goal is much bigger than n? in my head after getting playlist of length 2n it will not care about keeping k gaps.

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

    In second base case
    Why we using old_songs > n rather than old_songs < n??

  • @dhanesh.s
    @dhanesh.s Před 11 měsíci

    Please drop more on Beginners's System Design on your Course🙏

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

    Veri intutive bro... :)

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

    Is it fine , if I was unable to solve this question after thinking a lot on my first try ?

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

    Since we are working with the math in this solution, can you make a version of this solution that would generate all the playlist combinations? Or could you link a solution for a simillar problem?
    Im having a tought time accepting/ understanding the reason behind "no. of new songs that we have" in :
    res = (n-old_songs) * count(curr_goal-1 , old_songs+1)

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

      think of it this way, n is the total of unique songs, old_song is the unique songs we have used so far, so theoretically, we have (n - old_song) of possible new/unused songs available to us.

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

    I love you neetcode

  • @JM_utube
    @JM_utube Před 9 měsíci

    when will old_songs ever be > n?

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

    nice!

  • @demonrock3322
    @demonrock3322 Před 9 měsíci

    Can anyone post the tabulation solution? having a bit of trouble with it.

  • @MrZiyak99
    @MrZiyak99 Před 11 měsíci +2

    honest question is it possible to solve a problem like this without seeing the solution prior? were u able to solve this without seeing the solution just based on your intuition?

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

    Day 2 Streak Maintained !!

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

      :D can you share on how did you manage to do that?!

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

      @@ngneerin 🥲🥲🥲🥲

  • @MiguelLopez-ph4qb
    @MiguelLopez-ph4qb Před 11 měsíci

    Nuts

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

    Yesterday, I made the same wrong assumption about K songs. Eventually gave up on the problem.....

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

    This problem is a monster

  • @parashararamesh4252
    @parashararamesh4252 Před 11 měsíci +3

    Go the Mr Beast route..
    Try doing leetcode under crazy scenarios, for e.g:
    1. you can only use a mobile
    2. you can type but you have to look at the screen from the mirror
    3. you can press backspace only after each submission
    4. code underwater etc.
    Go crazy, get more views will make you feel better for leaving your google job XD ( just kidding... you are the GOAT!)

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

    well, it seems like a middle school math problem with few extra steps. A few more.

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

    Adding a Pair as Key in Hashmap is just not good, then you have to update its equals and hashCode

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

  • @atharvakulkarni2180
    @atharvakulkarni2180 Před 7 měsíci

    In the first example, why can't [1,2,1] be the answer? since difference between last 1 and first 1 is k

    • @karthickraja1760
      @karthickraja1760 Před 3 měsíci

      Each playlist should have all songs from n mentioned atleast once. Since there is no 3 mentioned atleast once. it is not correct

  • @AftabAlam-gh1nh
    @AftabAlam-gh1nh Před 11 měsíci

    Still not understood

  • @xiaoshen194
    @xiaoshen194 Před 11 měsíci +3

    Password yaad aa gya achanak se?

  • @aditya-lr2in
    @aditya-lr2in Před 11 měsíci +1

    grab ur under 1k views ticket here

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

    Java memoization solution:
    class Solution {
    int mod = 1_000_000_000 + 7;
    long[][] memo;
    public int numMusicPlaylists(int n, int goal, int k) {
    memo = new long [goal + 1][n + 1]; //goal, oldSongs array.
    for(long[] arr: memo) {
    Arrays.fill(arr, -1);
    }
    return (int)count(goal, 0, n, k);
    }
    private long count(int curGoal, int oldSongs, int n, int k) {
    if(curGoal == 0 && oldSongs == n) //curGoal reached with exactly n songs.
    return 1;
    if(curGoal == 0 || oldSongs > n) //1. curGoal is reached but oldSongs !=n, 2. curGoal reached with oldsongs > n
    return 0;
    if(memo[curGoal][oldSongs] != -1)
    return memo[curGoal][oldSongs];
    long picknew = 0;
    //choose new song
    picknew = (n - oldSongs ) * count(curGoal - 1, oldSongs + 1, n, k) ; // new songs = n - oldsongs. and new goal will be curGoal -1, and since we picked new song, it is now added to old songs, so old songs + 1

    long pickOld = 0;
    //choose old song
    if(oldSongs > k)
    pickOld = (oldSongs - k ) * count(curGoal - 1, oldSongs, n, k) ; //we can pick oldsongs only if difference is k, curGoal decreases by 1 and since we did not pick new song, old songs count remains same.

    memo[curGoal][oldSongs] = (picknew % mod + pickOld % mod) % mod;

    return memo[curGoal][oldSongs];
    }
    }

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

    Java recursion - Time limit exceeded solution:
    class Solution {
    int mod = 1_000_000_000 + 7;
    public int numMusicPlaylists(int n, int goal, int k) {
    return (int)count(goal, 0, n, k);
    }
    private long count(int curGoal, int oldSongs, int n, int k) {
    if(curGoal == 0 && oldSongs == n) //curGoal reached with exactly n songs.
    return 1;
    if(curGoal == 0 || oldSongs > n) //1. curGoal is reached but oldSongs !=n, 2. curGoal reached with oldsongs > n
    return 0;
    long picknew = 0;
    //choose new song
    picknew = (n - oldSongs ) * count(curGoal - 1, oldSongs + 1, n, k) ; // new songs = n - oldsongs. and new goal will be curGoal -1, and since we picked new song, it is now added to old songs, so old songs + 1

    long pickOld = 0;
    //choose old song
    if(oldSongs > k)
    pickOld = (oldSongs - k ) * count(curGoal - 1, oldSongs, n, k) ; //we can pick oldsongs only if difference is k, curGoal decreases by 1 and since we did not pick new song, old songs count remains same.

    return (picknew % mod + pickOld % mod) % mod;
    }
    }