मान लीजिए कि हमारे पास nums नामक एक सरणी है। हमें यह जांचना होगा कि क्या अंकों के तत्वों को इस तरह से पुनर्व्यवस्थित करना संभव है कि यह शर्त का पालन करता है -
इसलिए, यदि इनपुट nums =[8, -4, 4, -8] जैसा है, तो आउटपुट ट्रू होगा जैसे कि हम i =0 के लिए [-4, -8, 4, 8] जैसे ऐरे को व्यवस्थित करते हैं, nums[2*0 + 1] =2 * (-4) =-8 i =1, nums[2*1 + 1] =2 * 4 =8
के लिएइसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- freq :=एक नक्शा जिसमें अंकों के तत्व और उनकी आवृत्तियां शामिल हैं
- प्रत्येक आइटम के लिए उनके निरपेक्ष मानों में क्रमबद्ध अंकों में, करते हैं
- अगर फ़्रीक[आइटम] 0 है, तो
- अगले पुनरावृत्ति के लिए जाएं
- अगर freq[2 * item] 0 है, तो
- झूठी वापसी
- freq[item] :=freq[item] - 1
- freq[2 * item] :=freq[2 * item] - 1
- अगर फ़्रीक[आइटम] 0 है, तो
- सही लौटें
उदाहरण
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
from collections import defaultdict def solve(nums): freq = defaultdict(int) for item in nums: freq[item] += 1 for item in sorted(nums, key = abs): if freq[item] == 0: continue if freq[2 * item] == 0: return False freq[item] -= 1 freq[2 * item] -= 1 return True nums = [8, -4, 4, -8] print(solve(nums))
इनपुट
[8, -4, 4, -8]
आउटपुट
True