572. 音乐组合
给定一些音乐的时长,我们想从中选两个不同的歌曲,使得他们的总时长是60的倍数,请计算我们有多少种选法。
样例
样例 1
输入: [1,2,59,60]
输出: 1
说明: 1 + 59 = 60
注意事项
-
1 \leq len(musics) \leq 10^51 ≤ l e n ( m u s i c s ) ≤ 105
-
1 \leq music_i \leq 601 ≤ m u s ici≤ 6 0
public class Solution {
/**
* @param musics: the musics
* @return: calc the number of pair of music
*/
public long musicPairs(int[] musics) {
long[] dp=new long[61];
for (int music : musics) {
dp[music]++;
}
long ret=0;
for (int i = 0; i < 30; i++) {
ret+=dp[i]*dp[60-i];
}
if (dp[30]>1) ret+=dp[30]*(dp[30]-1)/2;
if (dp[60]>1) ret+=dp[60]*(dp[60]-1)/2;
return ret;
}
}