A, B, C, D চারটি তালিকা এবং একটি টার্গেট মান দেওয়া আছে। A[i]+B[j]+C[k]+D[l] == target সিদ্ধ করে এমন স্বতন্ত্র চতুর্পদ (i,j,k,l) এর সংখ্যা বের করতে হবে।
উদাহরণ: A=[5,4,3], B=[8,4], C=[6,2], D=[4,10], target=23 হলে আউটপুট ৩। চতুর্পদগুলো: [5,8,6,4], [3,4,6,10], [3,8,2,10]।
সমাধানের ধাপসমূহ
- A এবং B-এর সব যুগল যোগফলের ফ্রিকোয়েন্সি ম্যাপ m তৈরি করুন
- C এবং D-এর সব যুগল যোগফল sum_cd বের করুন
- যদি target - sum_cd ম্যাপে থাকে তবে কাউন্ট যোগ করুন
- মোট কাউন্ট ফেরত দিন
উদাহরণ কোড
class Solution:
def solve(self, A, B, C, D, target):
count = 0
from collections import defaultdict
m = defaultdict(int)
for i in A:
for j in B:
m[i + j] += 1
for k in C:
for z in D:
if target - (k + z) in m:
count += m[target - (k + z)]
return count
ob = Solution()
A = [5, 4, 3]
B = [8, 4]
C = [6, 2]
D = [4, 10]
target = 23
print(ob.solve(A, B, C, D, target))
ইনপুট
[5, 4, 3], [8, 4], [6, 2], [4, 10], 23
আউটপুট
3