ধরুন আমাদের কাছে সংখ্যা নামক সংখ্যার একটি তালিকা আছে এবং আরেকটি মান লক্ষ্য আছে, আমাদের সাবলিস্টের সংখ্যা খুঁজে বের করতে হবে যার যোগফল টার্গেটের সমান।
সুতরাং, ইনপুট যদি nums =[3, 0, 3] টার্গেট =3 এর মত হয়, তাহলে আউটপুট হবে 4, যেমন আমাদের কাছে এই সাবলিস্ট রয়েছে যার যোগফল 3:[3], [3, 0], [0, ৩], [৩]।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব:
- temp :=একটি খালি মানচিত্র
- তাপ[0] :=1
- s :=0
- উত্তর :=0
- আমি 0 থেকে সংখ্যার আকারের মধ্যে,
- করুন
- s :=s + nums[i]
- comp :=s - লক্ষ্য
- যদি comp temp-এর মধ্যে থাকে, তাহলে
- উত্তর :=ans + temp[comp]
- temp[s] :=temp[s] + 1
- উত্তর ফেরত দিন
আরও ভালভাবে বোঝার জন্য আসুন নিম্নলিখিত বাস্তবায়ন দেখি:
উদাহরণ কোড
from collections import defaultdict class Solution: def solve(self, nums, target): temp = defaultdict(int) temp[0] = 1 s = 0 ans = 0 for i in range(len(nums)): s += nums[i] comp = s - target if comp in temp: ans += temp[comp] temp[s] += 1 return ans ob = Solution() nums = [3, 0, 3] target = 3 print(ob.solve(nums, target))
ইনপুট
[3, 0, 3], 3
আউটপুট
4