ধরুন আমাদের দুটি অ্যারে রয়েছে arr1 এবং arr2, arr2 এর উপাদানগুলি অনন্য এবং arr2-এর সমস্ত উপাদানগুলিও arr1 এ উপস্থিত রয়েছে। আমাদের arr1 এর উপাদানগুলিকে এমনভাবে সাজাতে হবে যাতে arr1-এ আইটেমের আপেক্ষিক ক্রম arr2-এর মতোই হয়। যদি কিছু উপাদান থাকে যা arr2 তে উপস্থিত না থাকে, তবে সেগুলিকে আরোহী ক্রমে arr1 এর শেষে স্থাপন করা উচিত। তাই যদি arr1 হয় [2,3,1,3,2,4,6,7,9,2,19], এবং arr2 হয় [2,1,4,3,9,6] এর মত, তাহলে ফলাফল হবে [2,2,2,1,4,3,3,9,6,7,19]
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- D নামে একটি মানচিত্র তৈরি করুন এবং arr1-এ উপস্থিত উপাদানগুলির ফ্রিকোয়েন্সি সংরক্ষণ করুন
- দুটি অ্যারে রেস এবং টেম্প সংজ্ঞায়িত করুন
- প্রতিটি উপাদানের জন্য i arr2 −
- 0 থেকে D[i] – 1
- পরিসরে j-এর জন্য
- আমি রেস-এ যোগ করুন
- D[i] :=0
- 0 থেকে D[i] – 1
- এর জন্য (কী, মান) D
- এ জোড়া
- মান যদি 0 না হয়, তাহলে
- এর জন্য i :=0 থেকে মান – 1
- টেম্পে কী যোগ করুন
- এর জন্য i :=0 থেকে মান – 1
- মান যদি 0 না হয়, তাহলে
- টেম্প অ্যারে সাজান, রেস-এর শেষে টেম্প যোগ করুন এবং রিটার্ন রিটার্ন করুন
উদাহরণ
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
class Solution(object): def relativeSortArray(self, arr1, arr2): d = {} for i in arr1: if i not in d: d[i]= 1 else: d[i]+=1 res = [] temp = [] for i in arr2: for j in range(d[i]): res.append(i) d[i] =0 for k,v in d.items(): if v: for i in range(v): temp.append(k) temp.sort() res.extend(temp) return res ob1 = Solution() print(ob1.relativeSortArray([2,3,1,4,2,4,6,7,9,2,19] ,[2,1,4,3,9,6]))
ইনপুট
[2,3,1,3,2,4,6,7,9,2,19] [2,1,4,3,9,6]
আউটপুট
[2, 2, 2, 1, 4, 4, 3, 9, 6, 7, 19]