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

पायथन में न्यूनतम संचालन से समान योग वाली सरणियाँ ज्ञात करने का प्रोग्राम


मान लीजिए हमारे पास nums1 और nums2 नामक दो सरणियाँ हैं। सरणियों में मान 1 और 6 (सम्मिलित) के बीच हैं। एक संचालन में, हम किसी भी सरणी में किसी भी मान को 1 और 6 के बीच किसी भी मान में अद्यतन कर सकते हैं। हमें nums1 में मानों का योग nums2 में मानों के योग के बराबर बनाने के लिए आवश्यक न्यूनतम संचालनों की संख्या ज्ञात करनी है। यदि यह संभव नहीं है तो -1 वापस करना है।

इसलिए, यदि इनपुट है nums1 = [1,5,6], nums2 = [4,1,1], तो आउटपुट 2 होगा क्योंकि हम nums2 को [4,1,1] से पहले संचालन में [4,1,6] में बदल सकते हैं, और दूसरे संचालन में [4,2,6] में बदलकर इसका योग nums1 के बराबर बना सकते हैं।

इसे हल करने के लिए, हम निम्न चरणों का पालन करेंगे:

  • s1 := nums1 में सभी तत्वों का योग

  • s2 := nums2 में सभी तत्वों का योग

  • nums1 सूची को क्रमबद्ध करें और nums2 सूची को क्रमबद्ध करें

  • यदि s1 > s2, तो

    • nums1 और nums2 को स्वैप करें

    • s1 और s2 को स्वैप करें

  • ans := 0

  • left := 0, right := nums2 का आकार - 1

  • जब तक left < nums1 की लंबाई या right >= 0, करें

    • यदि s1, s2 के समान है, तो

      • ans वापस करें

    • curr_left := nums1[left] यदि left < nums1 की लंबाई, अन्यथा 7

    • curr_right := nums2[right] यदि right >= 0 अन्यथा 0

    • यदि 6-curr_left >= curr_right-1, तो

      • s1 := s1 + 6-curr_left और s2-s1 का न्यूनतम

      • left := left + 1

    • अन्यथा,

      • s2 := s2 - curr_right-1 और s2-s1 का न्यूनतम

      • right := right - 1

    • ans := ans + 1

  • यदि s1, s2 के समान नहीं है तो -1 वापस करें अन्यथा ans

उदाहरण

बेहतर समझ के लिए निम्न कार्यान्वयन देखें:

def solve(nums1, nums2):
    s1 = sum(nums1)
    s2 = sum(nums2)
    nums1.sort()
    nums2.sort()
    if s1 > s2:
        nums1, nums2 = nums2, nums1
        s1, s2 = s2, s1
    ans = 0
    left, right = 0, len(nums2)-1
    while left < len(nums1) or right >= 0:
        if s1 == s2:
            return ans
        curr_left = nums1[left] if left < len(nums1) else 7
        curr_right = nums2[right] if right >= 0 else 0
        if 6 - curr_left >= curr_right - 1:
            s1 += min(6 - curr_left, s2 - s1)
            left += 1
        else:
            s2 -= min(curr_right - 1, s2 - s1)
            right -= 1
        ans += 1
    return -1 if s1 != s2 else ans

nums1 = [1,5,6]
nums2 = [4,1,1]
print(solve(nums1, nums2))

इनपुट

[1,5,6], [4,1,1]

आउटपुट

2
  1. - पायथन में एक संख्या को दूसरी संख्या में बदलने के लिए आवश्यक न्यूनतम संक्रियाओं की संख्या खोजने का प्रोग्राम

    मान लीजिए हमारे पास एक संख्या start और एक अन्य संख्या end है (start < end), हमें start को end में बदलने के लिए आवश्यक न्यूनतम संक्रियाओं की संख्या ढूंढनी है इन संक्रियाओं का उपयोग करके: 1 से बढ़ाएं 2 से गुणा करें उदाहरण के लिए, यदि इनपुट है start = 5, end = 11, तो आउटपुट होगा 2, क्योंकि हम 2 से ग

  1. पायथन प्रोग्राम: किसी संख्या के सम गुणनखंडों का योग ज्ञात करें पायथन प्रोग्राम: किसी संख्या के सम गुणनखंडों का योग ज्ञात करें

    इस लेख में हम दी गई समस्या के समाधान के बारे में जानेंगे। समस्या कथन हमें एक संख्या दी गई है, हमें उस संख्या के सभी सम गुणनखंडों का योग प्रदर्शित करना है। दृष्टिकोण हम जांचते हैं कि क्या संख्या विषम है, तो कोई सम गुणनखंड नहीं हैं, इसलिए 0 वापस करें। यदि संख्या सम है, तो हम गणना के माध्यम से जाते हैं

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

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