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

पायथन में गुड मील्स (Good Meals) की गिनती

समस्या विवरण

एक "गुड मील" में ठीक दो अलग-अलग खाद्य पदार्थ होते हैं जिनकी स्वादिष्टता (deliciousness) का योग 2 की घात (power of two) होता है। दिए गए सरणी से ऐसे जोड़ों की संख्या गिनें।

उदाहरण 1

arr = [1, 3, 5, 7, 9]
आउटपुट: 4
व्याख्या: जोड़े (1,3)=4, (1,7)=8, (3,5)=8, (7,9)=16 — सभी 2 की घात हैं।

उदाहरण 2

arr = [1,1,1,3,3,3,7]
आउटपुट: 15
व्याख्या: (1,1) 3 तरीके, (1,3) 9 तरीके, (1,7) 3 तरीके।

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

  1. सरणी को सॉर्ट करें।
  2. प्रत्येक तत्व के लिए, संभावित 2 की घातों (1, 2, 4, 8, 16...) तक जांचें।
  3. हैश मैप (डिक्शनरी) से पहले देखे गए तत्वों की आवृत्ति ट्रैक करें।
  4. मॉड्यूलो 10^9+7 लें (बड़ी संख्याओं के लिए)।

पूर्ण कोड (लीटकोड शैली)

from collections import defaultdict
from typing import List

class Solution:
    def countPairs(self, deliciousness: List[int]) -> int:
        MOD = 10**9 + 7
        count = 0
        freq = defaultdict(int)
        
        for d in deliciousness:
            # संभावित 2 की घात: 1, 2, 4, 8... 2*d तक
            power = 1
            while power <= 2 * d:
                complement = power - d
                count = (count + freq[complement]) % MOD
                power <<= 1  # 2 से गुणा करें
            freq[d] += 1
        
        return count

# टेस्ट
sol = Solution()
print(sol.countPairs([1,3,5,7,9]))       # 4
print(sol.countPairs([1,1,1,3,3,3,7]))   # 15

आउटपुट

4
15

समय जटिलता: O(n log max_val), जहां max_val अधिकतम स्वादिष्टता मान है।

  1. - पायथन में अभाज्य संख्याएं गिनें

    मान लीजिए हमारे पास एक सीमा n है। हमें 2 से n की सीमा में मौजूद अभाज्य संख्याओं की गिनती करनी है। यदि n = 10, तो परिणाम 4 होगा। क्योंकि 10 से पहले चार अभाज्य संख्याएं हैं, वे हैं 2, 3, 5, 7। इसे हल करने के लिए हम इस दृष्टिकोण का पालन करेंगे: count = 0 prime = आकार n + 1 की एक सरणी लें, और इसे Fals

  1. पायथन प्रोग्राम: सरणी में इनवर्जन गिनें पायथन प्रोग्राम: सरणी में इनवर्जन गिनें

    इस लेख में हम दी गई समस्या के समाधान के बारे में जानेंगे। समस्या कथन हमें एक लिस्ट दी गई है, हमें आवश्यक इनवर्जन गिनने और प्रदर्शित करने हैं। इनवर्जन काउंट यह गिनकर प्राप्त किया जाता है कि सरणी को क्रमबद्ध करने के लिए कितने चरणों की आवश्यकता है। उदाहरण arr[j]): inv_count += 1 re

  1. - पायथन में क्लास या स्टेटिक वेरिएबल्स

    जब किसी क्लास के अंदर लेकिन किसी मेथड के बाहर वेरिएबल घोषित किया जाता है, तो उसे क्लास वेरिएबल या स्टेटिक वेरिएबल कहा जाता है। यह सभी इंस्टेंसेज़ द्वारा साझा किया जाता है। उदाहरण 1: काउंटर के रूप में उपयोग class Fruits: count = 0 # क्लास वेरिएबल def __init__(self, name, count): se