สมมติว่าเรามีรายชื่อนักกีฬา N คน เราต้องหาอันดับญาติและคนที่ได้คะแนนสูงสุด 3 อันดับแรก ซึ่งจะได้เหรียญรางวัลต่างกัน:"ทอง" "เงิน" และ "ทองแดง"
ดังนั้นหากอินพุตเป็น [2,5,3,1,0] ผลลัพธ์จะเป็น [Bronze,Gold,Silver,4,5]
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
-
ถ้าขนาดของ nums เท่ากับ 1 แล้ว −
-
คืน "ทอง"
-
-
ถ้าขนาดของ nums เท่ากับ 2 แล้ว −
-
ถ้า nums[0]> nums[1] แล้ว −
-
คืน "ทอง" "เงิน"
-
-
มิฉะนั้น
-
คืน "เงิน", "ทอง"
-
-
-
กำหนดอาร์เรย์ v
-
DDefine vec อาร์เรย์
-
สำหรับการเริ่มต้น i :=0 เมื่อ i <ขนาดของ nums ให้อัปเดต (เพิ่ม i ขึ้น 1) ให้ทำ -
-
ใส่ nums[i] ต่อท้าย v
-
-
จัดเรียงอาร์เรย์ v
-
กลับอาร์เรย์ v
-
กำหนดหนึ่ง mp mp
-
ถ้าขนาดของ nums> 2 แล้ว −
-
แทรก {v[0], "Gold" } ลงใน mp
-
แทรก {v[1], "Silver" } ลงใน mp
-
แทรก {v[2], "Bronze" } ลงใน mp
-
สำหรับการเริ่มต้น i :=3 เมื่อฉัน <ขนาด v อัปเดต (เพิ่ม i ขึ้น 1) ให้ทำ -
-
แทรก { v[i], i + 1 เป็นสตริง} ลงใน mp
-
-
สำหรับการเริ่มต้น i :=0 เมื่อ i <ขนาดของ nums ให้อัปเดต (เพิ่ม i ขึ้น 1) ให้ทำ -
-
แทรก 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, ]