[LeetCode] 920. Number of Music Playlists #920
Comments
@grandyang mismatch of the content and problem. |
Fixed, thanks for pointing out! |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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: