मान लीजिए कि हमारे पास 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 :=0
- i के लिए 1 से लेकर अंकों के आकार -1 तक के लिए
- अगर मैं सम है, तो
- sm1 :=sm1 + nums[i]
- अन्यथा,
- sm2 :=sm2 + nums[i]
- अगर मैं सम है, तो
- यदि sm1 sm2 के समान है, तो
- रेस :=रेस + 1
- i के लिए 1 से लेकर अंकों के आकार -1 तक के लिए
- अगर मैं विषम है, तो
- sm1 :=sm1 - nums[i] + nums[i-1]
- अन्यथा,
- sm2 :=sm2 - nums[i] + nums[i-1]
- यदि sm1 sm2 के समान है, तो
- रेस :=रेस + 1
- अगर मैं विषम है, तो
- रिटर्न रेस
उदाहरण
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
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