ধরুন আমাদের তিনটি সাজানো অ্যারে রয়েছে 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 হিসাবে এ [i], B[j], C[k])) =|7-6| =1
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- i :=A - 1 এর আকার
- j :=B - 1 এর আকার
- k :=C - 1 এর আকার
- সর্বনিম্ন_ডিফারেন্স :=|সর্বোচ্চ A[i], B[j], C[k] - সর্বনিম্ন A[i], B[j], C[k]|
- যদিও i -1 এর মতো নয় এবং j -1 এর মতো নয় এবং k -1 এর মতো নয়, do
- কারেন্ট_ডিফ :=|সর্বোচ্চ A[i], B[j], C[k] - সর্বনিম্ন A[i], B[j], C[k]|
- যদি current_diff
- সর্বনিম্ন_ডিফারেন্স :=বর্তমান_ডিফ
- সর্বোচ্চ_ মেয়াদ :=সর্বোচ্চ A[i], B[j], C[k]
- যদি A[i] সর্বোচ্চ_টার্মের সমান হয়, তাহলে
- i :=i - 1
- অন্যথায় যখন B[j] সর্বাধিক_টার্মের সমান হয়, তখন
- j :=j - 1
- অন্যথায়,
- k :=k - 1>
উদাহরণ
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
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