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

पायथन में अधिकतम K-योग जोड़े ज्ञात करने का प्रोग्राम


मान लीजिए हमारे पास nums नामक एक सरणी और एक मान k है। एक संचालन में, हम nums से दो तत्व चुन सकते हैं जिनका योग k के बराबर हो और उन्हें सरणी से हटा सकते हैं। हमें सरणी पर किए जा सकने वाले अधिकतम संचालनों की संख्या ज्ञात करनी है।

इसलिए, यदि इनपुट है nums = [8,3,6,1,5] k = 9, तो आउटपुट 2 होगा क्योंकि हम [3,6] हटा सकते हैं जिनका योग 9 है, फिर [8,1] हटा सकते हैं जिनका योग भी 9 है।

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

  • counter := nums में मौजूद प्रत्येक आइटम की आवृत्ति वाला एक मैप
  • res := 0
  • counter में प्रत्येक num के लिए, करें
    • यदि counter[k-num] शून्येतर है, तो
      • यदि num, k - num के समान नहीं है, तो
        • res := res + counter[num] और counter[k-num] का न्यूनतम
        • counter[k-num] := 0
        • counter[num] := 0
      • अन्यथा,
        • res := res + (counter[num] / 2) का भागफल
  • res वापस करें

उदाहरण

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

from collections import Counter

def solve(nums, k):
    counter = Counter(nums)
    res = 0
    for num in counter:
        if counter.get(k-num, 0):
            if num != k - num:
                res += min(counter[num], counter[k-num])
                counter[k-num] = 0
                counter[num] = 0
            else:
                res += int(counter[num] / 2)
    return res

nums = [8,3,6,1,5]
k = 9
print(solve(nums, k))

इनपुट

[8,3,6,1,5], 9

आउटपुट

2
  1. Python से बाइनरी ट्री में गुड लीफ नोड पेयर्स की संख्या कैसे ढूंढें? Python से बाइनरी ट्री में गुड लीफ नोड पेयर्स की संख्या कैसे ढूंढें?

    दो लीफ नोड्स का पेयर गुड है अगर उनके बीच का सबसे छोटा पथ ≤ d है। पोस्ट-ऑर्डर DFS से सभी गुड पेयर्स काउंट करें। एल्गोरिदम रिकर्सिव util(root) रिटर्न करता है: प्रत्येक लीफ के लिए [depth_from_root, 0] (दूसरा मान अपडेट होता है)। लेफ्ट और राइट सबट्री के लीफ्स के लिए: डेप्थ्स इन्क्रीमेंट करें। सभी लेफ्ट-

  1. पायथन में BST में रेंज में नोड्स की संख्या खोजने का प्रोग्राम पायथन में BST में रेंज में नोड्स की संख्या खोजने का प्रोग्राम

    मान लीजिए हमारे पास एक BST है, और हमारे पास बाएं और दाएं बाउंड l और r भी हैं, हमें रूट में उन सभी नोड्स की संख्या गिननी है जिनके मान l और r के बीच हैं (सम्मिलित)। उदाहरण के लिए, यदि इनपुट जैसा है: l = 7, r = 13, तो आउटपुट 3 होगा, क्योंकि तीन नोड्स हैं: 8, 10, 12। इसे हल करने के लिए हम निम्न चरणों

  1. Python प्रोग्राम से सूची में सबसे छोटी संख्या खोजना Python प्रोग्राम से सूची में सबसे छोटी संख्या खोजना

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