506. Relative Ranks(重)

嗯。。。写得也很丑,自己就是写得最笨的那种先新建排序,然后依次查找排序后位置来决定相对名次,感觉笨笨的,不知道能不能利用map按key值排序来做?看看别人怎么写得吧

自己的解法

class Solution {
public:
    vector findRelativeRanks(vector& nums) {
        vector output;
        vector temp = nums; 
        vector medal;
        medal.push_back("Gold Medal");
        medal.push_back("Silver Medal");
        medal.push_back("Bronze Medal");
        sort(temp.begin(), temp.end());
        for (int i = 0; i < nums.size(); i ++){
            int j = 0;
            while (temp[j] != nums[i])
                j++;
            int k = nums.size() - j;
            if (k <= 3){
                output.push_back(medal[k-1]);
            }else{
                output.push_back(to_string(k));
            }
                
        }
        return output;
    }
};

人家的解法

看似类似的解法

挺重要的,注意理解vector的直接赋值。。。在这里不会耗费大量空间,与上次遇到的不同。写得比我好。

class Solution {
public:
    vector findRelativeRanks(vector& nums) {
        vector rank;
        for(int i=0; i nums[b];});
        vector ranks(nums.size());
        
        for(int i=3; i 0) ranks[rank[0]] = "Gold Medal";
        if(nums.size() > 1) ranks[rank[1]] = "Silver Medal";
        if(nums.size() > 2) ranks[rank[2]] = "Bronze Medal";
        
        return ranks;
    }
};

没遇到过的解法

神奇的priority_queue,以后好好看看是怎么用的。

class Solution {
public:
    vector findRelativeRanks(vector& nums) {
        priority_queue > pq;
        for(int i=0;i res(nums.size(),"");
        int count = 1;
        for(int i=0; i

你可能感兴趣的:(506. Relative Ranks(重))