ধরুন আমাদের দুটি অ্যারে রয়েছে 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]