ধরুন আমাদের কাছে গানের একটি তালিকা আছে, 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