Number of Music Playlists - Leetcode 920 - Python

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

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

  • @YeetusOfHouseFetus
    @YeetusOfHouseFetus Год назад +18

    Return of the king 🙇‍♂️

  • @Cheng-K
    @Cheng-K Год назад +14

    Happy to see that you are back at leetcoding 💪

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

      -leetcoding- neetcoding 😆

  • @peakpotential9
    @peakpotential9 Год назад +15

    Unique makes more sense than old_songs

    • @NeetCodeIO
      @NeetCodeIO  Год назад +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 Год назад

      ​@@NeetCodeIOthat's kind of clean code!

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

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

  • @jeevansammeswarsiddaboena99
    @jeevansammeswarsiddaboena99 Год назад +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

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

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

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

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

  • @uptwist2260
    @uptwist2260 Год назад +2

    Thanks for the daily

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

    dontr stop uploading videos, you are the best

  • @parashararamesh4252
    @parashararamesh4252 Год назад +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!)

  • @nahidtanvir5901
    @nahidtanvir5901 Год назад +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.

  • @MrZiyak99
    @MrZiyak99 Год назад +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?

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

    when will old_songs ever be > n?

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

    Day 2 Streak Maintained !!

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

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

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

      @@ngneerin 🥲🥲🥲🥲

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

    Thanks for the providing the answer for daily

  • @AMX0013
    @AMX0013 Год назад +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 3 месяца назад

      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.

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

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

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

    You're back!!

  • @dhanesh.s
    @dhanesh.s Год назад

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

  • @SandipKumarKushwaha-c7x
    @SandipKumarKushwaha-c7x Год назад

    Thanks for this better explanation ❤

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

    Thank you. It helped a lot

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

    Studying computer science would be much more difficult without you

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

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

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

    welcome back

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

    great explanation

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

    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 4 месяца назад +1

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

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

    great video thanks

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

    Impressive work :)

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

    Veri intutive bro... :)

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

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

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

    I love you neetcode

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

    This problem is a monster

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

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

  • @xiaoshen194
    @xiaoshen194 Год назад +3

    Password yaad aa gya achanak se?

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

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

  • @MiguelLopez-ph4qb
    @MiguelLopez-ph4qb Год назад

    Nuts

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

    nice!

  • @AftabAlam-gh1nh
    @AftabAlam-gh1nh Год назад

    Still not understood

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

  • @aditya-lr2in
    @aditya-lr2in Год назад +1

    grab ur under 1k views ticket here

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

    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;
    }
    }

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

    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];
    }
    }