কম্পিউটার টিউটোরিয়াল

পাইথনে তিনটি সর্টেড অ্যারে থেকে ম্যাক্স-মিন পার্থক্য ন্যূনতম করা


সমস্যা বিবরণ

তিনটি সর্টেড অ্যারে 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-এর জন্য)।

সমাধানের ধাপসমূহ

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

  2. পাইথনে heapq.merge() ব্যবহার করে দুটি সর্টেড লিস্ট মার্জ করা

  3. পাইথনে তিনটি সোর্টেড অ্যারেতে সাধারণ উপাদান বের করার প্রোগ্রাম

  4. Python-এ ইন্টিজারের ম্যাক্সিমাম ও মিনিমাম মান জানা