ধরুন আমাদের কাছে A, B, C এবং D সংখ্যার চারটি তালিকা রয়েছে এবং আরও একটি সংখ্যার লক্ষ্য আছে। আমাদের বিভিন্ন অনন্য সূচকের সংখ্যা খুঁজে বের করতে হবে i, j, k, l যেমন A[i] + B[j] + C[k] + D[l] ≤ লক্ষ্য।
সুতরাং, যদি ইনপুটটি A =[3, 2] B =[5, 3] C =[1] D =[2, 3] টার্গেট =9 এর মত হয়, তাহলে আউটপুট হবে 3, যেমন আমরা নিম্নলিখিতগুলি বেছে নিতে পারি সংমিশ্রণ:[3, 3, 1, 2] [3, 3, 1, 2] [2, 3, 1, 3]
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব:
- temp_list :=একটি নতুন তালিকা
- আমি 0 থেকে A আকারের রেঞ্জের জন্য, কর
- 0 থেকে B এর আকারের মধ্যে j এর জন্য, করুন
- টেম্প_লিস্টের শেষে সন্নিবেশ করুন (A[i] + B[j])
- 0 থেকে B এর আকারের মধ্যে j এর জন্য, করুন
- তালিকা temp_list সাজান
- উত্তর :=0
- আমি 0 থেকে C আকারের রেঞ্জের জন্য,
- করুন j-এর জন্য 0 থেকে D-এর আকারে,
- sum_cd :=C[i] + D[j]
- sum_ab :=টার্গেট - sum_cd
- উত্তর :=ans + 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