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/总持续时间可被 60 整除的歌曲

Leetcode-1013 Pairs of Songs With Total Durations Divisible by 60(总持续时间可被 60 整除的歌曲)

查找可被 6 或 7 整除但不能同时被 6 或 7 整除的整数

计算总和可被 k 整除的子序列总数