ধরুন আমাদের nums নামক একটি অ্যারে আছে। আমাদের পরীক্ষা করতে হবে যে সংখ্যার উপাদানগুলিকে এমনভাবে পুনর্বিন্যাস করা সম্ভব যে এটি শর্ত অনুসরণ করে −
সুতরাং, যদি ইনপুটটি nums =[8, -4, 4, -8] এর মত হয়, তাহলে আউটপুটটি True হবে যেন আমরা i =0-এর জন্য [-4, -8, 4, 8] এর মতো অ্যারে সাজাই। সংখ্যা[2*0 + 1] =2 * (-4) =-8 এর জন্য i =1, সংখ্যা[2*1 + 1] =2 * 4 =8
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- freq :=সংখ্যার উপাদান এবং তাদের ফ্রিকোয়েন্সি সম্বলিত একটি মানচিত্র
- প্রতিটি আইটেমের জন্য তাদের পরম মান অনুসারে সাজানো সংখ্যায়, করুন
- যদি freq[আইটেম] 0 হয়, তাহলে
- পরবর্তী পুনরাবৃত্তির জন্য যান
- যদি freq[2 * আইটেম] 0 হয়, তাহলে
- মিথ্যে ফেরত দিন
- freq[item] :=freq[item] - 1
- freq[2 * আইটেম] :=freq[2 * আইটেম] - 1
- যদি freq[আইটেম] 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