আমাদের দুটি ধনাত্মক মানের অ্যারে আছে nums1 এবং nums2, যাদের আকার একই। এই দুটি অ্যার่র পরম যোগফল পার্থক্য হলো |nums1[i] - nums2[i]|-এর যোগফল প্রতিটি 0 ≤ i < n এর জন্য (0-ইন্ডেক্সড)। এখন, আমরা nums1-এর tối बह একটি উপাদানকে nums1-এর অন্য যেকোনো উপাদান দিয়ে প্রতিস্থাপন করতে পারি যাতে পরম যোগফল পার্থক্য ন্যূনতম হয়। আমাদের প্রতিস্থাপনের পর ন্যূনতম পরম যোগফল পার্থক্য বের করতে হবে। উত্তর অনেক বড় হতে পারে, তাই এটিকে 10^9 + 7 দিয়ে মডুলো করে রিটার্ন করুন।
উদাহরণস্বরূপ, ইনপুট nums1 = [2,8,6], nums2 = [3,4,6] হলে আউটপুট হবে 3 কারণ, দুটি সম্ভাব্য অপ্টিমাল সমাধান রয়েছে:
ইন্ডেক্স 1-এর উপাদানকে ইন্ডেক্স 0-এর উপাদান দিয়ে প্রতিস্থাপন:
[2,8,6] => [2,2,6]ইন্ডেক্স 1-এর উপাদানকে ইন্ডেক্স 2-এর উপাদান দিয়ে প্রতিস্থাপন:
[2,8,6] => [2,6,6]
এই দুটির যেকোনো একটি দিয়ে যোগফল পার্থক্য পাওয়া যায় |2-3| + (|2-4| বা |6-4|) + |6-6| = 3।
সমাধানের ধাপসমূহ
যদি
nums1 == nums2হয়, তবে:0 রিটার্ন করুন
minn_diff := -infinityind := -1i= 0 থেকেnums1-এর আকার - 1 পর্যন্ত লুপ চালান:যদি
|nums1[i] - nums2[i]| > minn_diffহয়, তবে:ind := iminn_diff := |nums1[i] - nums2[i]|
diff := |nums1[ind] - nums2[ind]|index := indi= 0 থেকেnums1-এর আকার - 1 পর্যন্ত লুপ চালান:যদি
i != indহয়, তবে:যদি
|nums1[i] - nums2[ind]| < diffহয়, তবে:index := idiff := |nums1[i] - nums2[ind]|
summ := 0i= 0 থেকেnums1-এর আকার - 1 পর্যন্ত লুপ চালান:যদি
i == indহয়, তবে:summ := summ + |nums1[index] - nums2[i]|
অন্যথায়:
summ := summ + |nums1[i] - nums2[i]|
summ mod (10^9 + 7)রিটার্ন করুন
উদাহরণ
নিচের ইমপ্লিমেন্টেশনটি দেখুন ভালোভাবে বুঝার জন্য:
def solve(nums1, nums2):
if nums1 == nums2:
return 0
minn_diff = float('-inf')
ind = -1
for i in range(len(nums1)):
if abs(nums1[i] - nums2[i]) > minn_diff:
ind = i
minn_diff = abs(nums1[i] - nums2[i])
diff = abs(nums1[ind] - nums2[ind])
index = ind
for i in range(len(nums1)):
if i != ind:
if abs(nums1[i] - nums2[ind]) < diff:
index = i
diff = abs(nums1[i] - nums2[ind])
summ = 0
for i in range(len(nums1)):
if i == ind:
summ += abs(nums1[index] - nums2[i])
else:
summ += abs(nums1[i] - nums2[i])
return summ % (10**9 + 7)
nums1 = [2,8,6]
nums2 = [3,4,6]
print(solve(nums1, nums2)) ইনপুট
[2,8,6], [3,4,6]
আউটপুট
3