ধরুন আমাদের কাছে গানের একটি তালিকা আছে, i-th গানের সময়কাল [i] সেকেন্ড। আমাদের এমন জোড়া গানের সংখ্যা খুঁজে বের করতে হবে যার জন্য সেকেন্ডে তাদের মোট সময় 60 দ্বারা বিভাজ্য।
তাই যদি টাইম অ্যারে [30, 20, 150, 100, 40] এর মত হয়, তাহলে উত্তর হবে 3। তিন জোড়া হবে (3, 150), (20, 100), (20, 40) সব ক্ষেত্রে। মোট সময়কাল 60 দ্বারা বিভাজ্য।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- অবশিষ্ট সঞ্চয় করার জন্য একটি ম্যাপ রেম নিন। উত্তর সেট করুন :=0
- সমস্ত উপাদানের জন্য i সময়ে −
- আমি যদি 0 এবং 0 দ্বারা বিভাজ্য হয় rem, তাহলে ans :=ans + rem[0]
- অন্যথায় যখন 60 – (i mod 60), rem এ, তারপর ans :=ans + rem[60 – (i mod 60)]
- যদি rem-এ i mod 60 হয়, তাহলে 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