मान लीजिए हमारे पास तीन सॉर्टेड ऐरे A, B, और C हैं (ये अलग-अलग आकार के हो सकते हैं)। हमें किसी भी ट्रिपलेट (A[i], B[j], C[k]) के अधिकतम और न्यूनतम संख्या के बीच न्यूनतम निरपेक्ष अंतर की गणना करनी है जैसे कि वे क्रमशः ऐरे A, B और C से हों।
इसलिए, यदि इनपुट A: [2, 5, 6, 9, 11], B: [7, 10, 16], C: [3, 4, 7, 7] है, तो आउटपुट 1 होगा क्योंकि A[i] = 6, B[j] = 7, C[k] = 7 चुनने पर न्यूनतम अंतर |7 - 6| = 1 मिलता है।
समाधान दृष्टिकोण
इसे हल करने के लिए हम निम्न चरणों का पालन करेंगे:
i := len(A) - 1j := len(B) - 1k := len(C) - 1minimum_difference := |max(A[i], B[j], C[k]) - min(A[i], B[j], C[k])|- जब तक
i != -1औरj != -1औरk != -1:current_diff := |max(A[i], B[j], C[k]) - min(A[i], B[j], C[k])|- यदि
current_diff < minimum_difference, तोminimum_difference := current_diff maximum_term := max(A[i], B[j], C[k])- यदि
A[i] == maximum_term, तोi := i - 1 - अन्यथा यदि
B[j] == maximum_term, तोj := j - 1 - अन्यथा,
k := k - 1
minimum_differenceलौटाएं।
उदाहरण
बेहतर समझ के लिए निम्न कार्यान्वयन देखें:
def solve(A, B, C):
i = len(A) - 1
j = len(B) - 1
k = len(C) - 1
minimum_difference = abs(max(A[i], B[j], C[k]) - min(A[i], B[j], C[k]))
while i != -1 and j != -1 and k != -1:
current_diff = abs(max(A[i], B[j], C[k]) - min(A[i], B[j], C[k]))
if current_diff < minimum_difference:
minimum_difference = current_diff
maximum_term = max(A[i], B[j], C[k])
if A[i] == maximum_term:
i -= 1
elif B[j] == maximum_term:
j -= 1
else:
k -= 1
return minimum_difference
A = [2, 5, 6, 9, 11]
B = [7, 10, 16]
C = [3, 4, 7, 7]
print(solve(A, B, C))
इनपुट
A = [2, 5, 6, 9, 11], B = [7, 10, 16], C = [3, 4, 7, 7]
आउटपुट
1