Number of Music Playlists LeetCode solution in Python

1
# Runtime: 87 ms (Top 77.87%) | Memory: 13.9 MB (Top 86.89%)
2
class Solution:
3
def numMusicPlaylists(self, n: int, goal: int, k: int) -> int:
4
prev_p, cur_p = [0] * (n + 1), [0] * (n + 1)
5

6
for i in range(k + 1, goal + 1):
7
if i == k + 1:
8
prev_p[i] = math.factorial(n) // math.factorial(n - i)
9
else:
10
for j in range(k + 1, min(i, n) + 1):
11
cur_p[j] = prev_p[j - 1] * (n - j + 1) + prev_p[j] * (j - k)
12
prev_p, cur_p = cur_p, [0] * (n + 1)
13
return prev_p[n] % (10**9 + 7)

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0