मान लीजिए हमारे पास संख्याओं की एक ऐरे A है, हमें इस ऐरे के सभी इंडेक्स ढूंढने हैं ताकि ऐरे से i-th एलिमेंट को डिलीट करने के बाद, ऐरे एक गुड ऐरे बन जाए। हमें ध्यान रखना है कि:
- गुड ऐरे एक ऐसा ऐरे है जिसमें एक एलिमेंट होता है जो अन्य सभी एलिमेंट्स के योग के बराबर होता है।
- यहां 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 प्रदर्शित करें
- यदि (A[i], k के समान है और my_map[k] > 1) या (A[i], k के समान नहीं है), तो
उदाहरण
बेहतर समझ के लिए निम्नलिखित इम्प्लीमेंटेशन देखें:
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