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

पायथन में जांचें कि सॉर्टेड ऐरे को ऐसे जोड़ों में विभाजित किया जा सकता है जिनका योग k हो

मान लीजिए हमारे पास संख्याओं का एक ऐरे और एक संख्या k है। हमें यह जांचना है कि क्या दिया गया ऐरे ऐसे जोड़ों में विभाजित किया जा सकता है कि प्रत्येक जोड़ी का योग k हो।

उदाहरण के लिए, यदि इनपुट arr = [1, 2, 3, 4, 5, 6], k = 7 है, तो आउटपुट True होगा क्योंकि हम (2, 5), (1, 6) और (3, 4) जैसे जोड़े बना सकते हैं।

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

चूंकि ऐरे पहले से सॉर्टेड है, हम दो पॉइंटर्स का उपयोग करते हैं - एक शुरुआत से (low) और एक अंत से (high)। यदि योग k से कम है, तो low बढ़ाएं; यदि अधिक है, तो high घटाएं; यदि बराबर है, तो दोनों को अंदर की ओर ले जाएं।

एल्गोरिदम चरण:

  1. n = len(arr)
  2. यदि n विषम है, तो False लौटाएं
  3. low = 0, high = n - 1
  4. जब low < high:
    • यदि arr[low] + arr[high] != k, तो False लौटाएं
    • low += 1, high -= 1
  5. True लौटाएं

पायथन कार्यान्वयन

def solve(arr, k):
    n = len(arr)
    if n % 2 == 1:
        return False
    
    low = 0
    high = n - 1
    
    while low < high:
        if arr[low] + arr[high] != k:
            return False
        low += 1
        high -= 1
    return True

arr = [1, 2, 3, 4, 5, 6]
k = 7
print(solve(arr, k))  # True

इनपुट

[1, 2, 3, 4, 5, 6], 7

आउटपुट

True

व्याख्या:

सॉर्टेड ऐरे [1, 2, 3, 4, 5, 6]:

  • low=0 (1), high=5 (6): 1+6=7 ✓
  • low=1 (2), high=4 (5): 2+5=7 ✓
  • low=2 (3), high=3 (4): 3+4=7 ✓

सभी जोड़ों का योग 7 है।

महत्वपूर्ण:

यह एल्गोरिदम केवल तभी काम करता है जब ऐरे पहले से सॉर्टेड हो। अनसॉर्टेड ऐरे के लिए पहले सॉर्ट करें या हैश-मैप आधारित दृष्टिकोण का उपयोग करें।

  1. - पायथन में उन योगों को खोजें जिनके लिए ऐरे को समान योग के उप-सरणियों में विभाजित किया जा सकता है

    मान लीजिए हमारे पास पूर्णांकों का एक ऐरे A है। हमें sum के सभी मान ढूंढने हैं ताकि किसी मान sum[i] के लिए ऐरे को उप-सरणियों में विभाजित किया जा सके जिनमें से प्रत्येक का योग sum[i] हो। यदि हम ऐरे को समान योग की उप-सरणियों में विभाजित नहीं कर सकते, तो -1 लौटाएं। इसलिए, यदि इनपुट A = [2, 4, 2, 2, 2,

  1. - Python में जांचें कि क्या कोई संख्या क्रमबद्ध सरणी में बहुमत तत्व है

    मान लीजिए हमारे पास एक सरणी है जिसे nums कहा जाता है और यह गैर-घटते क्रम में क्रमबद्ध है, और एक संख्या target है। हमें यह पता लगाना है कि क्या target एक बहुमत तत्व है। एक सरणी में एक बहुमत तत्व वह तत्व है जो लंबाई N की सरणी में N/2 से अधिक बार प्रकट होता है। इसलिए यदि सरणी जैसी है - [2,4,5,5,5,5,5,6

  1. - पायथन में क्रमबद्ध सरणी मर्ज करें

    मान लीजिए हमारे पास दो क्रमबद्ध सरणी A और B हैं। हमें उन्हें मर्ज करना है और केवल एक क्रमबद्ध सरणी C बनाना है। सूचियों का आकार भिन्न हो सकता है। उदाहरण के लिए, मान लीजिए A = [1,2,4,7] और B = [1,3,4,5,6,8], तो मर्ज की गई सूची C [1,1,2,3,4,4,5,6,7,8] होगी। हल करने के चरण i := 0, j := 0 और end := A क