সমস্যা বিবরণ
তিনটি সর্টেড অ্যারে A, B, C দেওয়া আছে (আকার ভিন্ন হতে পারে)। যেকোনো ট্রিপলেট (A[i], B[j], C[k]) এর জন্য max(A[i],B[j],C[k]) - min(A[i],B[j],C[k]) এর ন্যূনতম মান বের করতে হবে।
উদাহরণস্বরূপ, A=[2,5,6,9,11], B=[7,10,16], C=[3,4,7,7] হলে আউটপুট 1 (ট্রিপলেট 6,7,7-এর জন্য)।
সমাধানের ধাপসমূহ
- তিনটি পয়েন্টার
i, j, kশেষ থেকে শুরু করুন। minimum_difference = abs(max(A[i],B[j],C[k]) - min(A[i],B[j],C[k]))।- যতক্ষণ পয়েন্টারগুলো >= ০:
- কারেন্ট পার্থক্য হিসাব করুন এবং
minimum_differenceআপডেট করুন। - ম্যাক্সিমাম টার্ম কোন অ্যারেতে সেটি বের করুন এবং সেই পয়েন্টার ১ কমানো।
- কারেন্ট পার্থক্য হিসাব করুন এবং
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)) # আউটপুট: 1
ইনপুট
A = [2, 5, 6, 9, 11] B = [7, 10, 16] C = [3, 4, 7, 7]
আউটপুট
1