मान लीजिए हमारे पास nums नामक एक ऐरे है जिसकी लंबाई सम है, हमें जांचना है कि क्या इसे इस तरह पुनः क्रमित करना संभव है कि हर 0 <= i < len(nums)/2 के लिए nums[2*i + 1] = 2*nums[2*i] हो।
उदाहरण के लिए, यदि इनपुट है nums = [4,-2,2,-4], तो आउटपुट True होगा।
समाधान के चरण
cnt := Counter(nums)(सभी तत्वों और उनकी आवृत्ति वाला मैप)cntकी सॉर्ट की गई सूची में प्रत्येकxके लिए जो उनके निरपेक्ष मानों के आधार पर सॉर्टेड है:- यदि
cnt[x] > cnt[2*x]:Falseवापस करें
cnt[2*x] := cnt[2*x] - cnt[x]
- यदि
Trueवापस करें
उदाहरण
बेहतर समझ के लिए निम्नलिखित कार्यान्वयन देखें:
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))
इनपुट
[4,-2,2,-4]
आउटपुट
True