मान लीजिए हमारे पास गानों की एक सूची है, i-वें गाने की अवधि time[i] सेकंड है। हमें उन गानों के जोड़ों की संख्या ढूंढनी है जिनके लिए उनका कुल समय सेकंड में 60 से विभाज्य है।
इसलिए यदि time ऐरे [30, 20, 150, 100, 40] की तरह है, तो उत्तर 3 होगा। तीन जोड़े होंगे (30, 150), (20, 100), (20, 40) सभी मामलों में कुल अवधि 60 से विभाज्य है।
समाधान के चरण
- rem नामक एक मैप लें शेष स्टोर करने के लिए। ans := 0 सेट करें
- time में सभी एलिमेंट्स i के लिए
- यदि i 60 से विभाज्य है और 0 rem में है, तो ans := ans + rem[0]
- अन्यथा जब 60 - (i mod 60) rem में है, तो ans := ans + rem[60 - (i mod 60)]
- यदि i mod 60 rem में है, तो 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