这是一道需要根据nums值进行indexs进行排序的题,参考这题。但是不同的是这道题需要在排好序之后的indexs数组中去找[0,1,2,3,4]对应的下标,这个下标就是它nums对应的名次了。
还要一个点就是注意下标用和begin()的迭代器的距离来求:
cpp实现:
/*
* @lc app=leetcode.cn id=506 lang=cpp
*
* [506] 相对名次
*/
// @lc code=start
class Solution {
public:
vector<string> findRelativeRanks(vector<int>& score) {
vector<int> indexs; // 索引数组
for (int i=0; i<score.size(); i++){
indexs.push_back(i);
}
// 索引按照score排逆序
sort(indexs.begin(),indexs.end(),[score,indexs](int i, int j){
return score[indexs[i]]>score[indexs[j]];
});
// for (int index:indexs) cout<<index<<" ";
// cout<<endl;
vector<string> ans;
for (int i=0; i<score.size(); i++){
vector<int>::iterator it = find(indexs.begin(),indexs.end(),i);
int nump = distance(indexs.begin(),it);
string tmp;
if (nump==0){
tmp = "Gold Medal";
}else if (nump==1){
tmp = "Silver Medal";
}else if (nump==2){
tmp = "Bronze Medal";
}else{
tmp = to_string(nump+1);
}
ans.push_back(tmp);
}
return ans;
}
};
// @lc code=end