मान लीजिए कि हमारे पास एन एथलीटों के स्कोर की एक सूची है, हमें उनके सापेक्ष रैंक और शीर्ष तीन उच्चतम स्कोर वाले लोगों को ढूंढना है, जो अलग-अलग पदक होंगे:"गोल्ड", "सिल्वर" और "कांस्य"।
इसलिए, यदि इनपुट [2,5,3,1,0] जैसा है, तो आउटपुट [कांस्य, सोना, चांदी, 4,5]
होगा।इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
-
यदि अंकों का आकार 1 के समान है, तो -
-
रिटर्न "गोल्ड"
-
-
यदि अंकों का आकार 2 के समान है, तो -
-
यदि अंक [0]> अंक [1], तो -
-
वापसी "गोल्ड", "सिल्वर"
-
-
अन्यथा
-
वापसी "सिल्वर", "गोल्ड"
-
-
-
सरणी को परिभाषित करें v
-
D एक सरणी vec परिभाषित करें
-
इनिशियलाइज़ i :=0 के लिए, जब i <अंकों का आकार, अपडेट करें (i से 1 बढ़ाएँ), करें -
-
v के अंत में nums[i] डालें
-
-
सरणी को क्रमबद्ध करें v
-
सरणी v को उलट दें
-
एक नक्शा एमपी परिभाषित करें
-
यदि अंकों का आकार> 2, तो -
-
एमपी में {v[0], "गोल्ड" } डालें
-
एमपी में {v[1], "सिल्वर" } डालें
-
एमपी में {v[2], "कांस्य" } डालें
-
इनिशियलाइज़ i :=3 के लिए, जब i <आकार का v, अपडेट करें (i से 1 बढ़ाएँ), करें -
-
एमपी में {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, ]