मान लीजिए कि हमारे पास समान आकार के दो सकारात्मक मान वाले सरणियाँ 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