मान लीजिए कि हमारे पास तीन क्रमबद्ध सरणियाँ हैं A, B, और C (ये विभिन्न आकारों के हो सकते हैं), हमें किसी भी त्रिक (A[i],B[j], की अधिकतम और न्यूनतम संख्या के बीच न्यूनतम निरपेक्ष अंतर की गणना करनी होगी। सी [के]) जैसे कि वे क्रमशः ए, बी और सी सरणी के अंतर्गत हैं,
इसलिए, यदि इनपुट ए:[2, 5, 6, 9, 11], बी:[7, 10, 16], सी:[3, 4, 7, 7] जैसा है, तो आउटपुट 1 जैसा होगा ए [i] =6 बी [जे] =7 और सी [के] =7 का चयन करके, हम न्यूनतम अंतर को अधिकतम (ए [i], बी [जे], सी [के]) - मिनट (ए) के रूप में प्राप्त करेंगे [i], बी [जे], सी [के])) =|7-6| =1पी>
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- i :=A-1 का आकार
- j :=B-1 का आकार
- k :=C-1 का आकार
- minimum_dfference :=|अधिकतम A[i], B[j], C[k] - न्यूनतम A[i], B[j], C[k]|
- जबकि मैं -1 के समान नहीं है और j -1 के समान नहीं है और k -1 के समान नहीं है, करते हैं
- current_diff :=|अधिकतम A[i], B[j], C[k] - न्यूनतम A[i], B[j], C[k]|
- यदि current_diff <न्यूनतम_dfसंदर्भ गैर-शून्य है, तो
- न्यूनतम_dfference:=current_diff
- maximum_term :=अधिकतम A[i], B[j], C[k]
- यदि A[i], max_term के समान है, तो
- i :=i - 1
- अन्यथा जब B[j] max_term के समान हो, तो
- j :=j-1
- अन्यथा,
- k :=k - 1>
- न्यूनतम_dfference लौटाएं
उदाहरण
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
def solve(A, B, C): i = len(A) - 1 j = len(B) - 1 k = len(C) - 1 minimum_dfference = 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_dfference: minimum_dfference = 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_dfference 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