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

पायथन में दो ऐरे का योग बराबर करने के लिए न्यूनतम ऑपरेशन ढूंढना


मान लीजिए हमारे पास दो लिस्ट nums1 और nums2 हैं जहां दोनों लिस्ट में प्रत्येक तत्व रेंज 1 से 6 में है। अब एक ऑपरेशन पर विचार करें जिसके द्वारा, हम nums1 या nums2 से एक संख्या चुन सकते हैं और उसके मान को 1 से 6 के बीच की संख्या में अपडेट कर सकते हैं। हमें न्यूनतम ऑपरेशन की संख्या ढूंढनी है ताकि इन दो ऐरे का योग समान हो जाए। यदि हम कोई समाधान नहीं ढूंढ सकते, तो -1 लौटाएं।

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

समाधान दृष्टिकोण

लालची दृष्टिकोण: दोनों ऐरे के योग की गणना करें। बड़े योग वाले ऐरे को घटाएं (तत्वों को 1 तक कम करके) और छोटे योग वाले ऐरे को बढ़ाएं (तत्वों को 6 तक बढ़ाकर), प्रत्येक चरण में अधिकतम संभव परिवर्तन चुनें।

  • sa = sum(nums1), sb = sum(nums2) की गणना करें।
  • यदि sa > sb, तो ऐरे और योग को स्वैप करें।
  • nums1 को आरोही, nums2 को अवरोही क्रम में सॉर्ट करें।
  • दोनों ऐरे पर पॉइंटर्स का उपयोग करके, प्रत्येक चरण में toadd = sb - sa को कम करने के लिए सबसे बड़ा संभव परिवर्तन चुनें।
  • ऑपरेशन गिनें, यदि असंभव तो -1 लौटाएं।

पायथन कार्यान्वयन

def solve(nums1, nums2):
    sa = sum(nums1)
    sb = sum(nums2)
    if sa > sb:
        nums1, nums2 = nums2, nums1
        sa, sb = sb, sa
    nums1.sort()
    nums2.sort(reverse=True)
    res = 0
    toadd = sb - sa
    i = 0
    j = 0
    while toadd > 0:
        res += 1
        if i < len(nums1) and j < len(nums2):
            resa = 6 - nums1[i]
            resb = nums2[j] - 1
            if resa > resb:
                toadd -= resa
                i += 1
            else:
                toadd -= resb
                j += 1
        elif i < len(nums1):
            resa = 6 - nums1[i]
            toadd -= resa
            i += 1
        elif j < len(nums2):
            resb = nums2[j] - 1
            toadd -= resb
            j += 1
        else:
            return -1
    return res

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

इनपुट

[2,1,4,3,5,4]

आउटपुट

2

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

    मान लीजिए हमारे पास दो स्ट्रिंग्स s और t हैं, हमें s के लिए आवश्यक न्यूनतम संक्रियाओं की मात्रा ढूंढनी है ताकि t, s का सबस्ट्रिंग बन जाए। अब, प्रत्येक संक्रिया में, हम s में किसी भी स्थिति को चुन सकते हैं और उस स्थिति के वर्ण को किसी अन्य वर्ण में बदल सकते हैं। उदाहरण के लिए, यदि इनपुट है s = abbpq

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

    मान लीजिए हमारे पास केवल निचले मामले के अक्षरों वाली समान लंबाई की दो स्ट्रिंग्स P और Q हैं, हमें स्ट्रिंग P पर आवश्यक न्यूनतम प्री-प्रोसेसिंग चालों की गिनती करनी है ताकि नीचे दिए गए ऑपरेशंस लागू करने के बाद यह स्ट्रिंग Q के बराबर हो जाए:कोई भी इंडेक्स i चुनें और वर्ण pi और qi को स्वैप करें।कोई भी इ

  1. - पायथन में दो दिए गए ऐरे से सब-अरे खोजें जिनका योग समान हो

    मान लीजिए हमारे पास दो ऐरे P और Q हैं जिनका आकार N है, वे 1 से N तक की संख्याएं रखते हैं। हमें दिए गए ऐरे से सब-अरे ढूंढने हैं ताकि उनका योग समान हो। अंत में ऐसे सब-अरे के इंडेक्स लौटाएं। यदि कोई समाधान नहीं है, तो -1 लौटाएं।तो, यदि इनपुट P = [2, 3, 4, 5, 6], Q = [9, 3, 2, 6, 5] जैसा है, तो आउटपुट ह