在Python中总持续时间可被60整除的歌曲对
假设我们有一个歌曲列表,第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–(imod60),则ans:=ans+rem[60–(imod60)]
如果我在rem中使用mod60,则rem[imod60]:=rem[imod60]+1
否则rem[imod60]:=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