मान लीजिए कि हमारे पास संख्याओं की एक सरणी A है, हमें इस सरणी के सभी सूचकांकों को खोजना होगा ताकि सरणी से ith तत्व को हटाने के बाद, सरणी एक अच्छी सरणी होगी। हमें यह ध्यान रखना होगा कि -
- अच्छा सरणी एक तत्व के साथ एक सरणी है जो अन्य सभी तत्वों के योग के बराबर होती है।
- 1-आधारित अनुक्रमण का उपयोग यहां किया जाएगा।
इसलिए, यदि इनपुट [10, 4, 6, 2] जैसा है, तो आउटपुट [1,4] होगा क्योंकि जब हम ए [1] को हटाते हैं, तो एरे [4, 6, 2] जैसा दिखेगा और यह अच्छा है, जैसा कि 6 =4+2 है। अगर हम A[4] को हटाते हैं, तो ऐरे [10, 4, 6] जैसा दिखेगा और यह 10 =4+6 के रूप में भी अच्छा है।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- n :=A का आकार
- जोड़ें:=0
- my_map :=एक नया नक्शा
- मैं के लिए 0 से n की सीमा में, करते हैं
- my_map[A[i]] :=my_map[A[i]] + 1
- जोड़ें :=+ A[i] जोड़ें
- मैं के लिए 0 से n की सीमा में, करते हैं
- k :=add - A[i]
- यदि k mod 2 0 के समान है, तो
- k :=k/2
- अगर my_map में k है, तो
- यदि (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