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