สมมติว่าเรามีรายชื่อเพลง เพลงที่ 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