ধরুন আমাদের কাছে অ-ঋণাত্মক সংখ্যার একটি তালিকা আছে যাকে বলা হয় সংখ্যা এবং আরেকটি ধনাত্মক মান 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