假设我们有一个歌曲列表,第i首歌曲的持续时间为[i]秒。我们必须找到一对以秒为单位的总时间可除以60的歌曲数。
因此,如果时间数组类似于[30,20,150,100,40],则答案将为3。在所有情况下,三对分别为(3,150),(20,100),(20,40)总持续时间可除以60。
为了解决这个问题,我们将遵循以下步骤-
进行映射存储以存储剩余物。设置ans:= 0
对于我及时的所有元素-
如果我在rem中可被0和0整除,则ans:= ans + rem [0]
o否则,当rem中有60 –(i mod 60),则ans:= ans + rem [60 –(i mod 60)]
如果我在rem中使用mod 60,则rem [i mod 60]:= rem [i mod 60] + 1
否则rem [i mod 60]:= 1
返回ans
让我们看下面的实现以更好地理解-
class Solution(object):
def numPairsDivisibleBy60(self, time):
ans = 0
remainder = {}
for i in time:
if i % 60 == 0 and 0 in remainder:
ans += remainder[0]
elif 60 - (i%60) in remainder:
ans += remainder[60 - (i%60)]
if i % 60 in remainder:
remainder[i%60]+=1
else:
remainder[i%60]=1
return ans
ob1 = Solution()
print(ob1.numPairsDivisibleBy60([30,20,150,100,40]))[30,20,150,100,40]
输出结果
3