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

其实用hash的思想我已经想到了,但是没有注意到它的特殊性,也就是组合方式的多样性,余数为0和余数为30的需要特殊考虑,也就是各自K*(K-1)/2,然后其他的从1-29对应到31-59都是m乘n的计数方式。

这其实是一道组合数字的题目。