ধরুন আমাদের কাছে একই আকারের দুটি ধনাত্মক মানসম্পন্ন অ্যারে 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