Number of Music Playlists LeetCode solution in Python
1# Runtime: 87 ms (Top 77.87%) | Memory: 13.9 MB (Top 86.89%)2class Solution:3def numMusicPlaylists(self, n: int, goal: int, k: int) -> int:4prev_p, cur_p = [0] * (n + 1), [0] * (n + 1)56for i in range(k + 1, goal + 1):7if i == k + 1:8prev_p[i] = math.factorial(n) // math.factorial(n - i)9else:10for j in range(k + 1, min(i, n) + 1):11cur_p[j] = prev_p[j - 1] * (n - j + 1) + prev_p[j] * (j - k)12prev_p, cur_p = cur_p, [0] * (n + 1)13return prev_p[n] % (10**9 + 7)