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