मान लीजिए हमारे पास nums नामक एक ऐरे है। हम ठीक एक इंडेक्स चुन सकते हैं और उस इंडेक्स से तत्व को हटा सकते हैं। (तत्वों का इंडेक्स हटाने के बाद बदल सकता है)। हम कह सकते हैं कि एक ऐरे निष्पक्ष है जब विषम-इंडेक्स वाले मानों का योग सम-इंडेक्स वाले मानों के योग के बराबर होता है। हमें उन इंडेक्स की संख्या ढूंढनी है जिन्हें हम चुन सकते हैं ताकि हटाने के बाद, nums निष्पक्ष हो।
उदाहरण के लिए, यदि इनपुट है nums = [5,3,7,2], तो आउटपुट होगा:
- इंडेक्स 0 से हटाएं, ऐरे है
[3,7,2], सम पोजीशन योग: 3+2 = 5, विषम पोजीशन योग 7 (निष्पक्ष नहीं) - इंडेक्स 1 से हटाएं, ऐरे है
[5,7,2], सम पोजीशन योग: 5+2 = 7, विषम पोजीशन योग 7 (निष्पक्ष) - इंडेक्स 2 से हटाएं, ऐरे है
[5,3,2], सम पोजीशन योग: 5+2 = 7, विषम पोजीशन योग 3 (निष्पक्ष नहीं) - इंडेक्स 3 से हटाएं, ऐरे है
[5,3,7], सम पोजीशन योग: 5+7 = 12, विषम पोजीशन योग 3 (निष्पक्ष नहीं)
समाधान के चरण
res := 0,sm1 := 0,sm2 := 0iको 1 सेlen(nums)-1तक:- यदि
iसम है:sm1 := sm1 + nums[i]
- अन्यथा:
sm2 := sm2 + nums[i]
- यदि
- यदि
sm1 == sm2:res := res + 1
iको 1 सेlen(nums)-1तक:- यदि
iविषम है:sm1 := sm1 - nums[i] + nums[i-1]
- अन्यथा:
sm2 := sm2 - nums[i] + nums[i-1]
- यदि
sm1 == sm2:res := res + 1
- यदि
resवापस करें
उदाहरण
बेहतर समझ के लिए निम्नलिखित कार्यान्वयन देखें:
def solve(nums):
res, sm1, sm2 = 0, 0, 0
for i in range(1, len(nums)):
if i % 2 == 1:
sm1 += nums[i]
else:
sm2 += nums[i]
if sm1 == sm2:
res += 1
for i in range(1, len(nums)):
if i % 2 == 1:
sm1 = sm1 - nums[i] + nums[i-1]
else:
sm2 = sm2 - nums[i] + nums[i-1]
if sm1 == sm2:
res += 1
return res
nums = [5,3,7,2]
print(solve(nums))
इनपुट
[5,3,7,2]
आउटपुट
1