Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Python

पायथन में न्यूनतम निरपेक्ष योग अंतर खोजने का प्रोग्राम


मान लीजिए हमारे पास दो पॉजिटिव-वैल्यूड ऐरे nums1 और nums2 हैं, जिनका आकार समान है। इन दो ऐरे का निरपेक्ष योग अंतर प्रत्येक 0 <= i < n के लिए |nums1[i] - nums2[i]| का योग है। अब, हम nums1 के अधिकतम एक तत्व को nums1 के किसी अन्य तत्व से बदल सकते हैं ताकि निरपेक्ष योग अंतर न्यूनतम हो। हमें 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 प्राप्त होता है।

हल करने के चरण

  1. यदि nums1 == nums2, तो 0 वापस करें।
  2. minn_diff := -infinity, ind := -1
  3. i को 0 से nums1 के आकार - 1 तक लूप चलाएं:
    • यदि |nums1[i] - nums2[i]| > minn_diff, तो ind := i और minn_diff := |nums1[i] - nums2[i]|
  4. diff := |nums1[ind] - nums2[ind]|, index := ind
  5. i को 0 से nums1 के आकार - 1 तक लूप चलाएं:
    • यदि i != ind, तो:
      • यदि |nums1[i] - nums2[ind]| < diff, तो index := i और diff := |nums1[i] - nums2[ind]|
  6. summ := 0
  7. i को 0 से nums1 के आकार - 1 तक लूप चलाएं:
    • यदि i == ind, तो summ := summ + |nums1[index] - nums2[i]|
    • अन्यथा, summ := summ + |nums1[i] - nums2[i]|
  8. 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
  1. पायथन प्रोग्राम: ऐरे का योग ढूंढें पायथन प्रोग्राम: ऐरे का योग ढूंढें

    इस लेख में, हम दिए गए प्रॉब्लम स्टेटमेंट को हल करने के समाधान और दृष्टिकोण के बारे में सीखेंगे। प्रॉब्लम स्टेटमेंट इनपुट के रूप में एक ऐरे दिए जाने पर, हमें दिए गए ऐरे का योग निकालने की आवश्यकता है। यहां हम ब्रूट-फोर्स दृष्टिकोण का पालन कर सकते हैं यानी एक लिस्ट को ट्रैवर्स करना और प्रत्येक एलिमें

  1. पायथन प्रोग्राम: लिस्ट में सभी पेयर्स के बीच एब्सोल्यूट डिफरेंस का योग ढूंढें पायथन प्रोग्राम: लिस्ट में सभी पेयर्स के बीच एब्सोल्यूट डिफरेंस का योग ढूंढें

    इस लेख में, हम दिए गए प्रॉब्लम स्टेटमेंट को हल करने के समाधान और दृष्टिकोण के बारे में सीखेंगे। प्रॉब्लम स्टेटमेंट एक लिस्ट इनपुट दिए जाने पर, हमें लिस्ट में सभी पेयर्स के बीच एब्सोल्यूट डिफरेंस का योग ढूंढने की आवश्यकता है। Enumerate() मेथड एक इटरेबल में काउंटर जोड़ता है और इसे एन्यूमरेट ऑब्जेक्

  1. पायथन प्रोग्राम: संख्या के फैक्टर्स का न्यूनतम योग ढूंढें पायथन प्रोग्राम: संख्या के फैक्टर्स का न्यूनतम योग ढूंढें

    इस लेख में, हम नीचे दिए गए प्रॉब्लम स्टेटमेंट के समाधान के बारे में सीखेंगे: प्रॉब्लम स्टेटमेंट एक नंबर इनपुट दिए जाने पर, दी गई संख्या के फैक्टर्स का न्यूनतम योग ढूंढें। यहां हम सभी फैक्टर्स और उनके संबंधित योग की गणना करेंगे और फिर उनमें से न्यूनतम ढूंढेंगे। तो संख्या के गुणनफल का न्यूनतम योग ढू