मान लीजिए कि हमारे पास समान आकार के दो सकारात्मक मान वाले सरणियाँ nums1 और nums2 हैं। इन दो सरणियों का पूर्ण योग है |nums1[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 :=-इन्फिनिटी
इंडस्ट्रीज़:=-1
मैं के लिए 0 से लेकर nums1 - 1 के आकार तक के लिए, करें
अगर |nums1[i]-nums2[i]|> minn_diff, फिर
इंडस्ट्रीज़:=मैं
minn_diff :=|nums1[i] - nums2[i]|
अंतर :=|nums1[ind] - nums2[ind]|
अनुक्रमणिका :=भारत
मैं के लिए 0 से लेकर nums1 - 1 के आकार तक के लिए, करें
अगर मैं भारत के समान नहीं हूं, तो
अगर |nums1[i] - nums2[ind]|
अनुक्रमणिका :=मैं
अंतर :=|nums1[i]-nums2[ind]|
योग :=0
मैं के लिए 0 से लेकर nums1 - 1 के आकार तक के लिए, करें
अगर मैं भारत के समान हूं, तो
योग :=योग + |nums1[index] - nums2[i]|
अन्यथा,
योग :=योग + |nums1[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