A, B, C, D চারটি তালিকা এবং একটি টার্গেট মান দেওয়া আছে। A[i]+B[j]+C[k]+D[l] <= target সিদ্ধ করে এমন অনন্য ইন্ডেক্স চতুর্পদ (i,j,k,l) এর সংখ্যা বের করতে হবে।
উদাহরণ: A=[3,2], B=[5,3], C=[1], D=[2,3], target=9 হলে আউটপুট ৩।
সমাধানের ধাপসমূহ
- A এবং B-এর সব যুগল যোগফল temp_list-এ সংরক্ষণ করুন এবং সর্ট করুন
- C এবং D-এর সব যুগল যোগফল sum_cd বের করুন
- sum_ab := target - sum_cd
- bisect_right দিয়ে temp_list-এ sum_ab এর চেয়ে ছোট বা সমান উপাদান সংখ্যা যোগ করুন
- মোট কাউন্ট ফেরত দিন
উদাহরণ কোড
from bisect import bisect_right
class Solution:
def solve(self, A, B, C, D, target):
temp_list = []
for i in range(len(A)):
for j in range(len(B)):
temp_list.append(A[i] + B[j])
temp_list.sort()
ans = 0
for i in range(len(C)):
for j in range(len(D)):
sum_cd = C[i] + D[j]
sum_ab = target - sum_cd
ans += bisect_right(temp_list, sum_ab)
return ans
ob = Solution()
A = [3, 2]
B = [5, 3]
C = [1]
D = [2, 3]
target = 9
print(ob.solve(A, B, C, D, target))
ইনপুট
[3, 2], [5, 3], [1], [2, 3], 9
আউটপুট
3