总持续时间可被 60 整除的歌曲【LC1010】
在歌曲列表中,第
i
首歌曲的持续时间为time[i]
秒。返回其总持续时间(以秒为单位)可被
60
整除的歌曲对的数量。形式上,我们希望下标数字i
和j
满足i < j
且有(time[i] + time[j]) % 60 == 0
。
-
思路
由于需要求两首歌的总时间可被60整除的对数,那么此时一定满足 t i m e [ i ] % 60 + t i m e [ j ] % 60 = 60 time[i]\%60 + time[j] \% 60 = 60 time[i]%60+time[j]%60=60,因此需要使用哈希表记录每首歌对60的余数及其出现次数。
-
实现
class Solution { public int numPairsDivisibleBy60(int[] time) { int[] count = new int[60]; int res = 0; for (int i = 0; i < time.length; i++){ time[i] %= 60; res += count[(60 - time[i]) % 60]; count[time[i]]++; } return res; } }
- 复杂度
- 时间复杂度: O ( n ) O(n) O(n)
- 空间复杂度: O ( C ) O(C) O(C)
- 复杂度