假设我们有一个歌曲列表,第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