在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 –(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