मान लीजिए हमारे पास ए, बी, सी और डी की चार सूची है और एक और संख्या लक्ष्य भी है। हमें विभिन्न अद्वितीय सूचकांकों की संख्या ज्ञात करनी है i, j, k, l जैसे कि A[i] + B[j] + C[k] + D[l] लक्ष्य।
इसलिए, यदि इनपुट ए =[3, 2] बी =[5, 3] सी =[1] डी =[2, 3] लक्ष्य =9 जैसा है, तो आउटपुट 3 होगा, जैसा कि हम निम्नलिखित चुन सकते हैं संयोजन:[3, 3, 1, 2] [3, 3, 1, 2] [2, 3, 1, 3]
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे:
- temp_list :=एक नई सूची
- i के लिए 0 से लेकर A के आकार तक के लिए, करें
- जे के लिए 0 से बी के आकार के लिए, करें
- temp_list के अंत में (A[i] + B[j]) डालें
- जे के लिए 0 से बी के आकार के लिए, करें
- सूची को क्रमबद्ध करें temp_list
- उत्तर:=0
- i के लिए 0 से C के आकार की सीमा में, करें
- जे के लिए 0 से डी के आकार के लिए, करें
- sum_cd :=C[i] + D[j]
- sum_ab :=लक्ष्य - sum_cd
- उत्तर:=उत्तर + temp_list में तत्वों की संख्या जिसका योग <=sum_ab
- जे के लिए 0 से डी के आकार के लिए, करें
- वापसी उत्तर
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें:
उदाहरण
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