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

पायथन में दो सरणियों के एलिमेंट्स के उत्पाद का k-वां सबसे बड़ा मान ढूंढने का प्रोग्राम

मान लीजिए हमें दो लिस्ट p और q दी गई हैं जिनमें कुछ इंटीजर नंबर हैं। हमें इन लिस्ट के सभी मानों को गुणा करना है और गुणन परिणामों से k-वां सबसे बड़ा मान ढूंढना है।

इसलिए, यदि इनपुट p = [2, 5], q = [6, 8], k = 2 है, तो आउटपुट 16 होगा।

गुणन परिणाम हैं: 2 * 6 = 12, 2 * 8 = 16, 5 * 6 = 30, 5 * 8 = 40। दूसरा सबसे बड़ा एलिमेंट (इंडेक्स 0 से शुरू) 16 है।

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

  • दोनों लिस्ट को सॉर्ट करें
  • कुशल शीर्ष-k ट्रैकिंग के लिए हीप का उपयोग करें
  • पॉजिटिव और नेगेटिव एलिमेंट्स को अलग-अलग संभालें
  • हीप के रूट से k-वां सबसे बड़ा मान लौटाएं

उदाहरण कार्यान्वयन

from heapq import heappush, heappop

def solve(p, q, k):
    p = sorted(p)
    q = sorted(q)
    k += 1
    heap = []
    for elem in q:
        if elem >= 0:
            for i in range(len(p) - 1, -1, -1):
                cd = elem * p[i]
                if heap and len(heap) == k and cd <= heap[0]:
                    break
                heappush(heap, cd)
                if len(heap) > k:
                    heappop(heap)
        else:
            for i in range(len(p)):
                cd = elem * p[i]
                if heap and len(heap) == k and cd <= heap[0]:
                    break
                heappush(heap, cd)
                if len(heap) > k:
                    heappop(heap)
    return heap[0]

print(solve([2, 5], [6, 8], 2))

इनपुट

[2, 5], [6, 8], 2

आउटपुट

16
  1. Python प्रोग्राम से ऐरे में सबसे बड़ा तत्व खोजना Python प्रोग्राम से ऐरे में सबसे बड़ा तत्व खोजना

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

  1. पायथन प्रोग्राम: दो क्रमबद्ध सरणियों से निकटतम जोड़ी खोजें पायथन प्रोग्राम: दो क्रमबद्ध सरणियों से निकटतम जोड़ी खोजें

    इस लेख में हम दी गई समस्या के समाधान के बारे में जानेंगे। समस्या कथन हमें दो सरणियाँ दी गई हैं, हमें दो क्रमबद्ध सरणियों से निकटतम जोड़ी खोजने की आवश्यकता है। उदाहरण # sys मॉड्यूल import sys # जोड़ी def print_(ar1, ar2, m, n, x): # अंतर diff = sys.maxsize # इंडेक्स l = 0 r = n-1

  1. पायथन प्रोग्राम: जांचें कि कोई संख्या दो की घात है या नहीं पायथन प्रोग्राम: जांचें कि कोई संख्या दो की घात है या नहीं

    इस लेख में, हम दिए गए प्रॉब्लम स्टेटमेंट को हल करने के समाधान और दृष्टिकोण के बारे में सीखेंगे। प्रॉब्लम स्टेटमेंट एक संख्या n दिए जाने पर, हमें जांचना होगा कि दी गई संख्या दो की घात है या नहीं। दृष्टिकोण इनपुट नंबर को दो से विभाजित करते रहें, यानी n/2 इटरेटिवली। प्रत्येक इटरेशन में जांचें, यदि