ধরি আমাদের একটি অ্যারে আছে যার নাম nums। আমাদের যাচাই করতে হবে nums-র এলিমেন্টগুলো এমনভাবে রি-অ্যারেঞ্জ করা সম্ভব কিনা যেন নিচের শর্ত মেনে:
উদাহরণস্বরূপ, nums = [8, -4, 4, -8] হলে আউটপুট হবে True, কারণ [-4, -8, 4, 8] 식으로 সাজালে: i=0 হলে nums[1] = 2*(-4) = -8 এবং i=1 হলে nums[3] = 2*4 = 8।
সমাধানের ধাপসমূহ
- freq := nums-র এলিমেন্ট ও ফ্রিকোয়েন্সির ম্যাপ
- nums-কে absolute value অনুযায়ী সর্ট করে প্রতিটি item-এর জন্য:
- যদি freq[item] == 0, তবে চালিয়ে যান
- যদি freq[2*item] == 0, তবে false রিটার্ন করুন
- freq[item] এবং freq[2*item] এক কমান
- true রিটার্ন করুন
উদাহরণ
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