ধরুন আমাদের কাছে অ-ঋণাত্মক সংখ্যার একটি তালিকা আছে যাকে বলা হয় সংখ্যা এবং আরেকটি ধনাত্মক মান k। অন্তত 2 দৈর্ঘ্যের এমন কোনো সাবলিস্ট আছে কি না, যার যোগফল k এর গুণিতক বা না তা আমাদের পরীক্ষা করতে হবে।
সুতরাং, যদি ইনপুটটি nums =[12, 6, 3, 4] k =5 এর মত হয়, তাহলে আউটপুটটি True হবে, কারণ সাবলিস্টটি হল [12, 3] যোগফল 15 যা 5 দ্বারা বিভাজ্য।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- সমষ্টি :=0
- m :=একটি নতুন মানচিত্র
- m[0] :=-1
- আমি 0 থেকে সংখ্যার আকারের মধ্যে,
- করুন
- সমষ্টি :=যোগফল + সংখ্যা[i]
- সমষ্টি :=সমষ্টি মোড k
- যদি যোগফল m এ থাকে, তাহলে
- যদি i - m[sum]>=2, তাহলে
- সত্য ফেরান
- যদি i - m[sum]>=2, তাহলে
- অন্যথায়,
- m[সমষ্টি] :=i
- মিথ্যে ফেরত দিন
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
উদাহরণ
class Solution:
def solve(self, nums, k):
sum = 0
m = {}
m[0] = -1
for i in range(0, len(nums)):
sum += nums[i]
sum %= k
if sum in m:
if i - m[sum] >= 2:
return True
else:
m[sum] = i
return False
ob = Solution()
nums = [12, 6, 3, 4]
k = 5
print(ob.solve(nums, k)) ইনপুট
[12, 6, 3, 4], 5
আউটপুট
True