LeetCode 1010. 总持续时间可被 60 整除的歌曲 Java

Posted 鱼の家

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode 1010. 总持续时间可被 60 整除的歌曲 Java相关的知识,希望对你有一定的参考价值。

最先想到的两重for循环,超时,输入的数组很大,一整个页面的数,人直接傻了

class Solution {
    public int numPairsDivisibleBy60(int[] time) {
        int count = 0;
        for(int i=0;i<time.length - 1;i++){
            for(int j=i+1;j<time.length;j++){
                if((time[i] + time[j]) % 60 == 0){
                    count++;
                }
            }
        }
        return count;
    }
}

接下来运用余数的思想。一个数除以60的余数为0~59,建立一个数组remainder保存余数出现的次数。
先不考虑余数为0和30的情况。
剩下的余数相加为60则说明可以整除。建立头尾两个指针,1与59,2与58...,如果1有m个,2有n个,那么组合起来是m * n,为count的个数。
如果余数为0或30,假设余数为0的数有k个,那么k*(k-1)/2,为count的个数。
最后返回count。

class Solution {
    public int numPairsDivisibleBy60(int[] time) {
        int count = 0;
        int remainder[] = new int[60];
        for(int i=0;i<time.length;i++){
            remainder[time[i] % 60]++;
        }
        count += remainder[0]*(remainder[0]-1)/2;
        count += remainder[30]*(remainder[30]-1)/2;
        int j = 1;
        int k = 59;
        while(j<k){
            count += remainder[j++] * remainder[k--];
        }
        return count;
    }
}

以上是关于LeetCode 1010. 总持续时间可被 60 整除的歌曲 Java的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode 1010. 总持续时间可被 60 整除的歌曲 Java

1010. 总持续时间可被 60 整除的歌曲

LeetCode/总持续时间可被 60 整除的歌曲

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

leetcode_easy_array1010. Pairs of Songs With Total Durations Divisible by 60

jmeter tps计算