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

पायथन में K-सबसे बड़े योग वाले जोड़े ज्ञात करने का प्रोग्राम


मान लीजिए हमें दो संख्याओं की सूचियाँ 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 := मिन हीप, ans := 0
  • nums0, nums1 को सॉर्ट करें
  • i, j := len(nums0)-1, len(nums1)-1
  • visited := सेट, heappush(pq, (-(nums0[i]+nums1[j]), i, j))
  • k बार दोहराएं:
    • sum, i, j := heappop(pq)
    • x = nums0[i-1]+nums1[j], यदि (i-1,j) विज़िटेड नहीं तो डालें
    • y = nums0[i]+nums1[j-1], यदि (i,j-1) विज़िटेड नहीं तो डालें
    • ans += -sum
  • ans वापस करें

उदाहरण

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 (i-1,j) not in visited:
                visited.add((i-1,j))
                heappush(pq, (-x, i-1, j))
            y = nums0[i]+nums1[j-1]
            if (i,j-1) not 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. पायथन प्रोग्राम: लिस्ट में सभी पेयर्स के बीच एब्सोल्यूट डिफरेंस का योग ढूंढें पायथन प्रोग्राम: लिस्ट में सभी पेयर्स के बीच एब्सोल्यूट डिफरेंस का योग ढूंढें

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