কম্পিউটার টিউটোরিয়াল

পাইথনে অ্যারের সব ভালো ইনডেক্স খুঁজে বের করা

मान लीजिए हमारे पास संख्याओं की एक सरणी A है। हमें इस सरणी के उन सभी सूचकांकों को ढूंढना है ताकि सरणी से iवें तत्व को हटाने के बाद, सरणी एक "अच्छी सरणी" बन जाए। ध्यान रखें कि:

  • अच्छी सरणी वह सरणी है जिसमें एक तत्व अन्य सभी तत्वों के योग के बराबर होता है
  • यहां 1-आधारित इंडेक्सिंग का उपयोग किया गया है

उदाहरण के लिए, यदि इनपुट [10, 4, 6, 2] है, तो आउटपुट [1,4] होगा क्योंकि जब हम A[1] हटाते हैं, तो सरणी [4, 6, 2] जैसी दिखेगी और यह अच्छी है क्योंकि 6 = 4+2। यदि हम A[4] हटाते हैं, तो सरणी [10, 4, 6] जैसी दिखेगी और यह भी अच्छी है क्योंकि 10 = 4+6।

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

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

  • n := A का आकार
  • add := 0
  • my_map := एक नया मैप
  • i के लिए 0 से n तक की रेंज में:
    • my_map[A[i]] := my_map[A[i]] + 1
    • add := add + A[i]
  • i के लिए 0 से n तक की रेंज में:
    • k := add - A[i]
    • यदि k मॉड 2, 0 के समान है, तो:
      • k := k/2
      • यदि k, my_map में है, तो:
        • यदि (A[i], k के समान है और my_map[k] > 1) या (A[i], k के समान नहीं है), तो i + 1 प्रदर्शित करें

उदाहरण कोड

from collections import defaultdict

def find_indices(A):
    n = len(A)
    add = 0
    my_map = defaultdict(lambda:0)
    for i in range(n):
        my_map[A[i]] += 1
        add += A[i]
    for i in range(n):
        k = add - A[i]
        if k % 2 == 0:
            k = k >> 1
            if k in my_map:
                if ((A[i] == k and my_map[k] > 1) or (A[i] != k)):
                    print((i + 1))

A = [10, 4, 6, 2]
find_indices(A)

इनपुट

[10, 4, 6, 2]

आउटपुट

1 4
  1. পাইথন প্রোগ্রামে অ্যারের যোগফল বের করা

  2. পাইথন প্রোগ্রাম অ্যারেতে সবচেয়ে বড় এলিমেন্ট বের করা

  3. পাইথনে অ্যারের যোগফল বের করা

  4. পাইথনে Regex ব্যবহার করে স্ট্রিংয়ে 10+1 প্যাটার্নের সব_match বের করার প্রোগ্রাম