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