ধরুন আমাদের কাছে এন অ্যাথলিটদের স্কোরের একটি তালিকা আছে, আমাদের তাদের আপেক্ষিক র্যাঙ্ক এবং শীর্ষ তিনটি সর্বোচ্চ স্কোরযুক্ত ব্যক্তিদের খুঁজে বের করতে হবে, যারা বিভিন্ন পদক হবে:"স্বর্ণ", "রৌপ্য" এবং "ব্রোঞ্জ"।
সুতরাং, যদি ইনপুটটি [2,5,3,1,0] এর মত হয়, তাহলে আউটপুট হবে [ব্রোঞ্জ,গোল্ড,সিলভার,4,5]
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
-
যদি সংখ্যার আকার 1 এর মতো হয়, তাহলে −
-
"গোল্ড"
ফেরত দিন
-
-
যদি সংখ্যার আকার 2 এর সমান হয়, তাহলে −
-
যদি nums[0]> nums[1] হয়, তাহলে −
-
"গোল্ড", "সিলভার"
ফেরত দিন
-
-
অন্যথায়
-
রিটার্ন "সিলভার", "গোল্ড"
-
-
-
একটি অ্যারে v
সংজ্ঞায়িত করুন -
একটি অ্যারে vec সংজ্ঞায়িত করুন
-
আরম্ভ করার জন্য i :=0, যখন i <সংখ্যার আকার, আপডেট (i 1 দ্বারা বৃদ্ধি), −
-
v
এর শেষে nums[i] সন্নিবেশ করান
-
-
অ্যারে সাজান v
-
অ্যারে বিপরীত করুন v
-
একটি মানচিত্র mp
সংজ্ঞায়িত করুন -
যদি সংখ্যার আকার> 2, তাহলে −
-
mp
-এ {v[0], "Gold" } ঢোকান -
mp
-এ {v[1], "Silver" } ঢোকান -
mp
-এ {v[2], "ব্রোঞ্জ" } ঢোকান -
আরম্ভ করার জন্য i :=3, যখন i <আকার v এর, আপডেট করুন (i 1 দ্বারা বাড়ান), করবেন −
-
mp
-এ { v[i], i + 1 as string} ঢোকান
-
-
আরম্ভ করার জন্য i :=0, যখন i <সংখ্যার আকার, আপডেট (i 1 দ্বারা বৃদ্ধি), −
-
vec
এর শেষে mp[nums[i]] ঢোকান
-
-
-
রিটার্ন vec
উদাহরণ
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
#include <bits/stdc++.h>
using namespace std;
void print_vector(vector<auto> v){
cout << "[";
for(int i = 0; i<v.size(); i++){
cout << v[i] << ", ";
}
cout << "]"<<endl;
}
class Solution {
public:
vector<string> findRelativeRanks(vector<int>& nums){
if (nums.size() == 1){
return { "Gold" };
}
if (nums.size() == 2){
if (nums[0] > nums[1])
return { "Gold", "Silver" };
else
return { "Silver", "Gold" };
}
vector<int> v;
vector<string> vec;
for (int i = 0; i < nums.size(); i++)
v.push_back(nums[i]);
sort(v.begin(), v.end());
reverse(v.begin(), v.end());
map<int, string> mp;
if (nums.size() > 2) {
mp.insert({v[0], "Gold" });
mp.insert({v[1], "Silver" });
mp.insert({v[2], "Bronze" });
for (int i = 3; i < v.size(); i++) {
mp.insert({ v[i], to_string(i + 1) });
}
for (int i = 0; i < nums.size(); i++)
vec.push_back(mp[nums[i]]);
}
return vec;
}
};
main(){
Solution ob;
vector<int> v = {2,5,3,1,0};
print_vector(ob.findRelativeRanks(v));
} ইনপুট
{2,5,3,1,0} আউটপুট
[Bronze, Gold, Silver, 4, 5, ]