Computer >> Máy Tính >  >> Lập trình >> Python

Các cặp bài hát có tổng thời lượng chia hết cho 60 bằng Python

Giả sử chúng ta có một danh sách các bài hát, bài hát thứ i có thời lượng là [i] giây. Chúng ta phải tìm số cặp bài hát mà tổng thời gian tính bằng giây của chúng chia hết cho 60.

Vì vậy, nếu mảng thời gian giống như [30, 20, 150, 100, 40], thì câu trả lời sẽ là 3. Ba cặp sẽ là (3, 150), (20, 100), (20, 40) cho mọi trường hợp tổng thời lượng chia hết cho 60.

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

  • Chụp bản đồ còn lại để lưu trữ phần còn lại. Đặt ans:=0
  • cho tất cả các yếu tố tôi trong thời gian -
    • nếu tôi chia hết cho 0 và 0 trong rem thì ans:=ans + rem [0]
    • o ngược lại khi 60 - (tôi mod 60) trong rem, thì ans:=ans + rem [60 - (tôi mod 60)]
    • nếu tôi mod 60 trong rem, thì rem [i mod 60]:=rem [tôi mod 60] + 1
    • nếu không thì rem [i mod 60]:=1
  • trả lại các ans

Ví dụ

Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -

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]))

Đầu vào

[30,20,150,100,40]

Đầu ra

3