एक संख्याओं की सूची nums दी गई है। एक फंक्शन f(i) पर विचार करें जो इंडेक्स i पर तत्व को हटाता है और फिर true या false लौटाता है, यह इस बात पर निर्भर करता है कि परिणामी सूची का सम इंडेक्स वाले मानों का योग विषम इंडेक्स वाले मानों के योग के बराबर है या नहीं। हमें उन इंडेक्स की संख्या चाहिए जिनके लिए f true लौटाएगा।
उदाहरण
इनपुट: nums = [6, 8, 5, 2, 3]
आउटपुट: 2
व्याख्या: यदि हम 8 हटाते हैं, तो सरणी बन जाएगी [6, 5, 2, 3], सम और विषम इंडेक्स वाले तत्वों का योग 8 है, इसलिए वे समान हैं। एक और संभावित समाधान: यदि हम 2 हटाते हैं, तो सरणी बन जाएगी [6, 8, 5, 3], यहां सम और विषम इंडेक्स वाले तत्वों का योग 11 है, इसलिए वे समान हैं।
एल्गोरिदम
n:= nums का आकारa:= 2 x (n+1) आकार की 2D सूची, सभी 0 से भरी हुई- प्रत्येक इंडेक्स
iऔर मानxके लिए nums में:a[0][i + 1] := a[0][i]a[1][i + 1] := a[1][i]a[i % 2][i + 1] := a[i % 2][i + 1] + x
c := 0s:= nums में मौजूद सभी तत्वों का योगi0 सेn - 1तक:e := a[0][i] - a[0][0] + a[1][n] - a[1][i + 1]- यदि
e * 2 == s - nums[i], तो:c := c + 1
cलौटाएं
Python कार्यान्वयन
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)) # आउटपुट: 2
इनपुट/आउटपुट
Input: [6, 8, 5, 2, 3]
Output: 2