1010. 总持续时间可被 60 整除的歌曲
Posted vampire6
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了1010. 总持续时间可被 60 整除的歌曲相关的知识,希望对你有一定的参考价值。
[1010. 总持续时间可被 60 整除的歌曲](1010. 总持续时间可被 60 整除的歌曲)
-
有这样一个性质:
[(a+b)\\%c=0-->(a\\%c+b\\%c)\\%c=0
]
我们可以用map将每个数对应的取模结果还有个数存起来,这样i从[1,30) , (map[i]*map[60-i]) 就是一部分的解了,
这样就不用考虑顺序了,每种情况这样相乘就行了,还有当i=30的时候, 就是n*(n-1)/2的结果,n就是30的个数,
同理不要忘了样例2的情况就是模为0的情况,和为30时同样的操作,n*(n-1)/2,累加即可。
class Solution {
public:
int numPairsDivisibleBy60(vector<int>& time) {
map<int,int>mp;
for(int i=0;i<time.size();i++)
{
mp[time[i]%60]++;
}
// cout<<endl;
int cnt=0;
for(int i=1;i<30;i++)
cnt+=mp[i]*mp[60-i];
cnt+=mp[30]*(mp[30]-1)/2;
int ll=mp[0];
cnt+=ll*(ll-1)/2;
return cnt;
}
};
以上是关于1010. 总持续时间可被 60 整除的歌曲的主要内容,如果未能解决你的问题,请参考以下文章
LeetCode 1010. 总持续时间可被 60 整除的歌曲 Java
LeetCode 1010. 总持续时间可被 60 整除的歌曲 Java
Leetcode-1013 Pairs of Songs With Total Durations Divisible by 60(总持续时间可被 60 整除的歌曲)