মান লাগিয়ে, আমাদের একটি অ্যারে nums এবং অন্য একটি মান target আছে। এখন আমাদের সর্বোচ্চ কতগুলো নন-এম্পটি নন-ওভারল্যাপিং সাবঅ্যারে পাওয়া যায় যাতে প্রতিটি সাবঅ্যারের সম ভ্যালু target-এর সমান হয়।
যেমন, ইনপুট nums = [3,2,4,5,2,1,5], target = 6 হলে, আউটপুট হবে 2 কারণ দুটি সাবঅ্যারে [2,4] এবং [1,5] যাদের সম ৬।
এটি সমাধান করতে আমরা নিচের ধাপগুলো অনুসরণ করব:
- t := ০ ধারণকারী একটি নতুন সেট
- temp := 0
- ans:= 0
- nums-এ থাকা প্রতিটি i জন্য:
- temp := temp + i
- prev := temp - target
- যদি prev t-তে থাকে, তবে:
- ans := ans + 1
- t := temp ধারণকারী একটি নতুন সেট
- অন্যথায়, temp t-তে যোগ করুন
- ans রিটার্ন করুন
বेहतर বোঝার জন্য নিচের ইমপ্লিমেন্টেশন দেখুন:
উদাহরণ
def solve(nums, target):
t = set([0])
temp = 0
ans=0
for i in nums:
temp += i
prev = temp-target
if prev in t:
ans += 1
t = set([temp])
else:
t.add(temp)
return ans
nums = [3,2,4,5,2,1,5]
target = 6
print(solve(nums, target))
ইনপুট
[3,2,4,5,2,1,5], 6
আউটপুট
2