मान लीजिए हमारे पास संख्याओं की एक सूची है जिसे अंक कहा जाता है। अब एक फ़ंक्शन पर विचार करें f(i) जो इंडेक्स i पर तत्व को हटा देता है और फिर सही या गलत लौटाता है, परिणामी सूची के सम इंडेक्स मानों का योग विषम इंडेक्स मानों के योग के समान होता है या नहीं। इसलिए हमें उन अनुक्रमणिकाओं की संख्या चाहिए जिनके लिए f सत्य लौटाएगा।
इसलिए, यदि इनपुट संख्या =[6, 8, 5, 2, 3] की तरह है, तो आउटपुट 2 होगा, क्योंकि अगर हम 8 को हटाते हैं, तो सरणी [6, 5, 2, 3], विषम होगी और यहां तक कि सूचकांक तत्वों का योग भी 8 है, इसलिए वे समान हैं। एक अन्य संभावित समाधान है, यदि हम 2 को हटाते हैं, तो सरणी [6, 8, 5, 3] होगी, यहां विषम और सम अनुक्रमित तत्वों का योग 11 है, इसलिए वे समान हैं।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- n :=अंकों का आकार
- a :=क्रम 2 x (n+1) की एक 2d सूची और प्रत्येक को 0s से भरें
- प्रत्येक अनुक्रमणिका i और मान x अंक के लिए, करें
- a[0, i + 1] :=a[0, i]
- a[1, i + 1] :=a[1, i]
- a[i mod 2, i + 1] :=a[i mod 2, i + 1] + x
- सी :=0
- s :=अंकों में मौजूद सभी तत्वों का योग
- मैं के लिए 0 से n -1 की सीमा में, करो
- e :=a[0, i] - a[0, 0] + a[1, n] - a[1, i + 1]
- यदि e * 2 s - nums[i] के समान है, तो
- सी :=सी + 1
- वापसी सी
उदाहरण
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
def solve(nums): n = len(nums) a = [[0] * (n + 1), [0] * (n + 1)] for i, x in enumerate(nums): a[0][i + 1] = a[0][i] a[1][i + 1] = a[1][i] a[i % 2][i + 1] += x c = 0 s = sum(nums) for i in range(n): e = a[0][i] - a[0][0] + a[1][n] - a[1][i + 1] if e * 2 == s - nums[i]: c += 1 return c nums = [6, 8, 5, 2, 3] print(solve(nums))
इनपुट
[6, 8, 5, 2, 3]
आउटपुट
2