ধরুন আমাদের কিছু উপাদান সহ একটি অ্যারে আছে যেখানে উপাদান একাধিকবার প্রদর্শিত হতে পারে। আমাদের অ্যারেটি এমনভাবে সাজাতে হবে যাতে উপাদানগুলি তাদের ফ্রিকোয়েন্সি বৃদ্ধি অনুসারে সাজানো হয়। সুতরাং কোন উপাদানটি কম সময় উপস্থিত হবে তা আগে আসবে এবং তাই।
সুতরাং, ইনপুট যদি সংখ্যার মত হয় =[1,5,3,1,3,1,2,5], তাহলে আউটপুট হবে [2, 5, 5, 3, 3, 1, 1, 1]
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
-
mp :=একটি নতুন মানচিত্র
-
প্রতিটি স্বতন্ত্র উপাদানের জন্য i সংখ্যা থেকে, করুন
-
x:=সংখ্যায় উপস্থিত i সংখ্যা
-
যদি x mp-এ উপস্থিত থাকে, তাহলে
-
mp[x]
এর শেষে i ঢোকান
-
-
অন্যথায় mp[x] :=শুধুমাত্র একটি উপাদান i
সহ একটি তালিকা
-
-
উত্তর:=একটি নতুন তালিকা
-
প্রতিটি i জন্য mp কী-এর উপর ভিত্তি করে সাজান, do
-
প্রতিটি j-এর জন্য তালিকা mp[i] বিপরীত ক্রমে, করুন
-
উত্তরে j, i সংখ্যক বার প্রবেশ করান
-
-
-
উত্তর ফেরত দিন
উদাহরণ (পাইথন)
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
def solve(nums): mp = {} for i in set(nums): x=nums.count(i) try: mp[x].append(i) except: mp[x]=[i] ans=[] for i in sorted(mp): for j in sorted(mp[i], reverse=True): ans.extend([j]*i) return ans nums = [1,5,3,1,3,1,2,5] print(solve(nums))
ইনপুট
[1,5,3,1,3,1,2,5]
আউটপুট
[2, 5, 5, 3, 3, 1, 1, 1]