সমস্যা বিবৃতি
দুটি একই আকারের অ্যারে দেওয়া হয়েছে A[] এবং B[]। টাস্ক হল একই আকারের তৃতীয় অ্যারে তৈরি করা। ফলাফল অ্যারে উভয় অ্যারের থেকে সর্বাধিক n উপাদান থাকা উচিত। এটির প্রথমে A[] এর উপাদান নির্বাচন করা উচিত, তারপর B[] এর উপাদানগুলিকে একই ক্রমে বেছে নেওয়া উচিত যেভাবে সেগুলি আসল অ্যারেতে প্রদর্শিত হয়। যদি সাধারণ উপাদান থাকে, তবে শুধুমাত্র একটি উপাদান res[]-এ উপস্থিত থাকা উচিত এবং অগ্রাধিকার A[]
কে দেওয়া উচিত।উদাহরণ
যদি ইনপুট অ্যারে −
হয়arr1[] ={9, 17, 2, 25, 6}arr2[] ={17, 4, 8, 10, 1} তারপর চূড়ান্ত অ্যারে হল:{9, 17, 25, 8, 10}প্রে>অনুগ্রহ করে মনে রাখবেন উপাদান 17 সাধারণ এবং অগ্রাধিকার দেওয়া হয় arr1
কেঅ্যালগরিদম
- উভয় অ্যারের কপি তৈরি করুন এবং অনুলিপিগুলিকে নিচের ক্রমে সাজান
- আরআর১-কে অগ্রাধিকার দিয়ে উভয় অ্যারের অনন্য n সর্বাধিক উপাদান বাছাই করতে একটি হ্যাশ ব্যবহার করুন[]
- খালি হিসাবে ফলাফল অ্যারে শুরু করুন
- arr1[] এর মধ্য দিয়ে অতিক্রম করুন, হ্যাশের মধ্যে উপস্থিত arr1[]-এর সেই উপাদানগুলি কপি করুন। উপাদানের ক্রম একই রাখার জন্য এটি করা হয়
- arr2[]-এর জন্য ধাপ 4 পুনরাবৃত্তি করুন। এইবার আমরা শুধুমাত্র সেই উপাদানগুলি বিবেচনা করি যেগুলি arr1[> -এ নেই
উদাহরণ
আসুন এখন একটি উদাহরণ দেখি -
#includeনেমস্পেস ব্যবহার করে std;void printArray(vector &arr, int n) { for (int i =0; i temp1(arr1, arr1 + n); ভেক্টর temp2(arr2, arr2 + n); sort(temp1.begin(), temp1.end(), greater ()); sort(temp2.begin(), temp2.end(), greater ()); unordered_map m; int i =0, j =0; যখন (m.size() =temp2[j]) { m[temp1[i]]++; ++আমি; } অন্য { m[temp2[j]]++; ++j; } } ভেক্টর ফলাফল; জন্য (int i =0; i আউটপুট
ফাইনাল অ্যারে:9 17 25 8 10