ধরুন আমাদের কাছে একই আকারের দুটি ধনাত্মক মানসম্পন্ন অ্যারে nums1 এবং nums2 আছে। এই দুটি অ্যারের পরম যোগফল হল |সংখ্যা1[i] - nums2[i]| প্রতিটি 0 <=i
সুতরাং, যদি ইনপুট হয় 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 :=-ইনফিনিটি
ind :=-1
0 থেকে সংখ্যা 1 - 1 এর আকারের জন্য, করুন
যদি |সংখ্যা1[i]-সংখ্যা2[i]|> minn_diff, তারপর
ind :=i
minn_diff :=|সংখ্যা1[i] - সংখ্যা2[i]|
পার্থক্য :=|সংখ্যা1[ইন্ড] - সংখ্যা2[ইন্ড]|
index :=ind
0 থেকে সংখ্যা 1 - 1 এর আকারের জন্য, করুন
যদি আমি ind এর মত না হয়, তাহলে
যদি |সংখ্যা1[i] - সংখ্যা2[ইন্ড]|
সূচক :=i
পার্থক্য :=|সংখ্যা1[i]-সংখ্যা2[ইন্ড]|
যোগফল :=0
0 থেকে সংখ্যা 1 - 1 এর আকারের জন্য, করুন
যদি আমি ind এর মতই হয়, তাহলে
summ :=summ + |nums1[index] - nums2[i]|
অন্যথায়,
summ :=summ + |সংখ্যা1[i] - nums2[i]|
রিটার্ন সাম মোড (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