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 है।

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

  • सूची क्रमित करें p
  • सूची को क्रमित करें q
  • k :=k + 1
  • ढेर:=सूची प्रतिनिधित्व में एक नया ढेर
  • क्यू में प्रत्येक तत्व के लिए, करें
    • यदि तत्व>=0, तो
      • i रेंज में (p-1 का आकार) से -1 तक, 1 से घटाएं
        • सीडी:=elem * p[i]
        • यदि ढेर खाली नहीं है और ढेर का आकार k और cd <=ढेर [0] के समान है, तो
          • लूप से बाहर आएं
        • मूल्य सीडी को ढेर में डालें
        • यदि लंबाई (ढेर)> k, तो
          • ढेर से छोटी से छोटी वस्तु को हटाएं
    • अन्यथा,
      • i के लिए 0 से लेकर p के आकार तक के लिए, करें
        • सीडी:=elem * p[i]
        • यदि ढेर खाली नहीं है और ढेर का आकार k और cd <=ढेर [0] के समान है, तो
          • लूप से बाहर आएं
        • cd को हीप में डालें
        • यदि (ढेर)> k की लंबाई शून्य नहीं है, तो
          • लूप से सबसे छोटा आइटम हटाएं
  • रिटर्न हीप[0]

उदाहरण

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

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. एक सरणी में सबसे बड़ा तत्व खोजने के लिए पायथन प्रोग्राम

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

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

    इस लेख में, हम नीचे दिए गए समस्या कथन के समाधान के बारे में जानेंगे। समस्या कथन - हमें दो सरणियाँ दी गई हैं, हमें दो क्रमबद्ध सरणियों से निकटतम जोड़ी खोजने की आवश्यकता है आइए अब नीचे दिए गए कार्यान्वयन में समाधान देखें - उदाहरण # sys module import sys # pair def print_(ar1, ar2, m, n, x):  

  1. पायथन प्रोग्राम यह पता लगाने के लिए कि क्या नहीं दो की शक्ति है

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