Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

คู่ของเพลงที่มีระยะเวลาทั้งหมดหารด้วย 60 ใน Python


สมมติว่าเรามีรายชื่อเพลง เพลงที่ i มีระยะเวลา[i] วินาที เราต้องหาจำนวนคู่ของเพลงที่เวลาทั้งหมดในหน่วยวินาทีหารด้วย 60 ลงตัว

ดังนั้นหากอาร์เรย์เวลาเป็นเช่น [30, 20, 150, 100, 40] คำตอบจะเป็น 3 สามคู่จะเป็น (3, 150), (20, 100), (20, 40) สำหรับทุกกรณี ระยะเวลาทั้งหมดหารด้วย 60

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

  • นำแผนที่ rem เพื่อเก็บส่วนที่เหลือ ตั้งค่าเป็น :=0
  • สำหรับองค์ประกอบทั้งหมด i ในเวลา −
    • ถ้าฉันหารด้วย 0 และ 0 ใน rem ลงตัว แล้ว ans :=ans + rem[0]
    • o อย่างอื่นเมื่อ 60 – (i mod 60) ใน rem แล้ว ans :=ans + rem[60 – (i mod 60)]
    • ถ้าฉัน mod 60 ใน rem แล้ว rem[i mod 60] :=rem[i mod 60] + 1
    • มิฉะนั้น rem[i mod 60] :=1
  • คืนคำตอบ

ตัวอย่าง

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -

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