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

पायथन में समान उत्पाद वाला टुपल खोजने का प्रोग्राम


मान लीजिए हमारे पास अद्वितीय पॉजिटिव मानों वाला एक ऐरे nums है, हमें टुपल (a, b, c, d) की संख्या ढूंढनी है जैसे कि a*b = c*d जहां a, b, c, d nums के एलिमेंट हैं, और सभी एलिमेंट a, b, c, d विशिष्ट हैं।

उदाहरण के लिए, यदि इनपुट nums = [2,3,4,6] है, तो आउटपुट 8 होगा क्योंकि हम (2,6,3,4), (2,6,4,3), (6,2,3,4), (6,2,4,3), (3,4,2,6), (4,3,2,6), (3,4,6,2), (4,3,6,2) जैसे टुपल्स प्राप्त कर सकते हैं।

हल करने के चरण

  1. dic := एक खाली मैप, डिफ़ॉल्ट मान 0 यदि कोई कुंजी मौजूद नहीं है
  2. ans := 0
  3. i को 0 से len(nums) - 2 तक लूप चलाएं:
    • j को i+1 से len(nums) तक लूप चलाएं:
      • dic[nums[i]*nums[j]] := dic[nums[i]*nums[j]] + 1
  4. dic के सभी मानों की सूची में प्रत्येक v के लिए:
    • यदि v == 1, तो अगले इटरेशन पर जाएं
    • v := v - 1
    • s := (v/2) * (8 + 8*v)
    • ans := ans + s
  5. ans को इंटीजर के रूप में वापस करें।

उदाहरण

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

from collections import defaultdict
def solve(nums):
    dic = defaultdict(int)
    ans = 0
    for i in range(len(nums)-1):
        for j in range(i+1, len(nums)):
            dic[nums[i]*nums[j]] += 1
    for v in dic.values():
        if v == 1:
            continue
        v = v - 1
        s = (v/2) * (8 + 8*v)
        ans += s
    return int(ans)

nums = [3,4,6,2]
print(solve(nums))

इनपुट

[3,4,6,2]

आउटपुट

8
  1. Python से सबट्री में समान लेबल वाले नोड्स की संख्या कैसे ढूंढें? Python से सबट्री में समान लेबल वाले नोड्स की संख्या कैसे ढूंढें?

    रूटेड ट्री में प्रत्येक नोड के लिए, उसके सबट्री में उसी लेबल वाले नोड्स की संख्या ढूंढें (लेबल्स लोअरकेस लेटर्स)। एल्गोरिदम एज लिस्ट से ग्राफ बनाएं (अनडायरेक्टेड)। लेबल मैप बनाएं। रिकर्सिव DFS r(ni): चिल्ड्रन के काउंटर्स मर्ज करें, अपना लेबल जोड़ें, R[ni] = count[label]। पैरेंट लिंक हटाकर साइकिल अव

  1. - पायथन में समान सेट बिट्स वाली अगली बड़ी संख्या ढूंढने का प्रोग्राम

    एक संख्या n दी गई है। n से बड़ी सबसे छोटी संख्या ढूंढें जिसमें n के बराबर सेट बिट्स (1s) हों। उदाहरण इनपुट: n = 7 (बाइनरी: 0111) आउटपुट: 11 (बाइनरी: 1011) दोनों में तीन 1s हैं। एल्गोरिदम (बिट मैनिपुलेशन) copy = n, zeros = 0, ones = 0। अंतिम 0s गिनें: जब तक copy सम है और शून्य नहीं, zeros++, = 1।

  1. - पायथन में सन्निकट सबएरे के अधिकतम गुणनफल को खोजने का प्रोग्राम

    मान लीजिए हमारे पास nums नामक एक सरणी है, हमें एक सन्निकट सबएरे के तत्वों का गुणनफल ढूंढना है जिसमें सबसे बड़ा गुणनफल हो (कम से कम एक संख्या हो)। इसलिए यदि सरणी [1,9,2,0,2,5] है, तो आउटपुट 18 होगा, क्योंकि सन्निकट सबएरे [1,9,2] का अधिकतम गुणनफल है।इसे हल करने के लिए, हम इन चरणों का पालन करेंगे &minu