ধরুন আমাদের কাছে এন অ্যাথলিটদের স্কোরের একটি তালিকা আছে, আমাদের তাদের আপেক্ষিক র্যাঙ্ক এবং শীর্ষ তিনটি সর্বোচ্চ স্কোরযুক্ত ব্যক্তিদের খুঁজে বের করতে হবে, যারা বিভিন্ন পদক হবে:"স্বর্ণ", "রৌপ্য" এবং "ব্রোঞ্জ"।
সুতরাং, যদি ইনপুটটি [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, ]