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

पायथन में के-सबसे बड़े योग जोड़े खोजने का कार्यक्रम


मान लीजिए, हमें संख्याओं की दो सूचियां प्रदान की गई हैं जो nums0 और nums1 हैं और एक पूर्णांक k है। हमारा लक्ष्य k सबसे बड़ा योग युग्म खोजना है जहाँ प्रत्येक जोड़ी में एक पूर्णांक nums0 में और दूसरा nums1 में होता है। सभी जोड़ियों का योग वापस करना होगा।

इसलिए, यदि इनपुट nums1 =[8, 6, 12], nums2 =[4, 6, 8], k =2 जैसा है, तो आउटपुट 38 होगा। हमारे पास ये सबसे बड़े जोड़े हैं [12, 8] और [ 12, 6]।

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

  • अगर k> len(nums0) * len(nums1) गैर-शून्य है, तो

    • वापसी 0

  • pq :=एक नया न्यूनतम ढेर

  • उत्तर:=0

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

  • i, j :=nums0 का आकार - 1, nums1 का आकार - 1

  • विज़िट किया गया :=एक नया सेट

  • ढेर में धक्का pq(−(nums0[i] + nums1[j]) , i, j)

  • मेरे लिए 0 से k की सीमा में, करें

    • योग, मैं, जे:=ढेर पीक्यू से पॉप

    • x :=nums0[i − 1] + nums1[j]

    • यदि नहीं (i − 1, j) विज़िट किया गया गैर–शून्य है, तो

      • देखे जाने के लिए जोड़ें(i − 1, j)

      • ढेर में धकेलें pq(−x, i − 1, j)

    • y :=nums0[i] + nums1[j - 1]

    • यदि नहीं (i, j - 1) विज़िट किया गया गैर-शून्य है, तो

      • देखे जाने के लिए जोड़ें(i, j - 1)

      • ढेर में धकेलें pq( −y, i, j − 1)

    • उत्तर :=उत्तर + −योग

  • वापसी उत्तर

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

पायथन

from heapq import heappush, heappop
class Solution:
   def solve(self, nums0, nums1, k):
      if k > len(nums0) * len(nums1):
         return 0
      pq = []
      ans = 0
      nums0.sort(), nums1.sort()
      i, j = len(nums0) − 1, len(nums1) − 1
      visited = set()
      heappush(pq, (−(nums0[i] + nums1[j]), i, j))
      for _ in range(k):
         sum, i, j = heappop(pq)
         x = nums0[i − 1] + nums1[j]
         if not (i − 1, j) in visited:
            visited.add((i − 1, j))
            heappush(pq, (−x, i − 1, j))
         y = nums0[i] + nums1[j − 1]
         if not (i, j − 1) in visited:
            visited.add((i, j − 1))
            heappush(pq, (−y, i, j − 1))
         ans += −sum
      return ans
ob = Solution()
print(ob.solve([8, 6, 12], [4, 6, 8], 2))

इनपुट

[8, 6, 12],[4, 6, 8],2

आउटपुट

38

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

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

  1. सरणी का योग खोजने के लिए पायथन कार्यक्रम

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

  1. एक सूची में सभी जोड़ों के बीच पूर्ण अंतर का योग खोजने के लिए पायथन कार्यक्रम

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