You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Your music player contains N different songs and she wants to listen to L (not necessarily different) songs during your trip. You create a playlist so that:
Every song is played at least once
A song can only be played again only if K other songs have been played
Return the number of possible playlists. As the answer can be very large, return it modulo 10^9 + 7.
Example 1:
Input: N = 3, L = 3, K = 1
Output: 6
Explanation: There are 6 possible playlists. [1, 2, 3], [1, 3, 2], [2, 1, 3], [2, 3, 1], [3, 1, 2], [3, 2, 1].
Example 2:
Input: N = 2, L = 3, K = 0
Output: 6 Explanation: There are 6 possible playlists. [1, 1, 2], [1, 2, 1], [2, 1, 1], [2, 2, 1], [2, 1, 2], [1, 2, 2]
Example 3:
Input: N = 2, L = 3, K = 1
Output: 2
Explanation: There are 2 possible playlists. [1, 2, 1], [2, 1, 2]
Uh oh!
There was an error while loading. Please reload this page.
Your music player contains
N
different songs and she wants to listen toL
(not necessarily different) songs during your trip. You create a playlist so that:K
other songs have been playedReturn the number of possible playlists. As the answer can be very large, return it modulo
10^9 + 7
.Example 1:
Example 2:
Example 3:
Note:
0 <= K < N <= L <= 100
这道题说是一个音乐播放器有N首歌,有个她想听L首歌(可以有重复),但需要满足两个条件,一个是每首歌都必须至少播放1次,第二个是两首重复歌的中间至少要有K首其他的歌。提示了结果可能非常巨大,需要对一个超大数取余。对于这类结果超大的数,基本不用怀疑,基本都是用动态规划 Dynamic Programming 来做,这里主要参考了 大神 optimisea 的帖子。首先就是要确定 dp 的定义式,显然这里一维的 dp 数组是罩不住的,因为貌似有三个参数,N,L 和 K。但是否意味着需要个三维数组呢,其实也不用,并不关心所有的K值,但是对于N和L是必须要关注的,这里用一个二维 dp 数组,其中 dp[i][j] 表示总共放了i首歌,其中j首是不同的。下面来考虑状态转移方程,在加入一首歌的时候,此时有两种情况:
综上所述可以得到状态转移方程:
参见代码如下:
Github 同步地址:
#920
参考资料:
https://leetcode.com/problems/number-of-music-playlists/
https://leetcode.com/problems/number-of-music-playlists/discuss/178415/C%2B%2BJavaPython-DP-Solution
https://leetcode.com/problems/number-of-music-playlists/discuss/180338/DP-solution-that-is-Easy-to-understand
LeetCode All in One 题目讲解汇总(持续更新中...)
The text was updated successfully, but these errors were encountered: